volatile что это гарантирует

В двух словах volatile запрещает оптимизацию кода компилятором. Важная иногда вещь ибо компилятор может переставлять инструкции и еще много чего делать не позволительного.