Skip to the content.

Volatile


Volatile - ключевое слово яп С/С++, которое указывает компилятору не оптимизировать эту переменную, так как её значение может меняться извне.

const MAX_COUNT = 4;
size_t count = 0;

if (count > MAX_COUNT)
{
    // limit exceeded
}
// count меняем с другого потока

Условие будет всегда истинно, так как компилятор может оптимизировать как-то так:

if (true)
{
    // limit exceeded
}

Чтобы такого не происходило - используем volatile (то есть в данном случае говорим компилятору что count может изменяться с другого потока):

volatile size_t count = 0;

либо

size_t volatile count = 0;