Проблема оптимизации компилятора / переменная имеет неправильное значениеLinux

Anonymous
Проблема оптимизации компилятора / переменная имеет неправильное значение

Сообщение Anonymous »

Я определяю переменные как

Код: Выделить всё

volatile sig_atomic_t v1;
volatile int v2;
Затем в одном процессе (потоке) выполните

Код: Выделить всё

v1 = false;
v2 = 0;
...
v2 = (some_var);
v1 = true;
и в другом процессе (потоке)

Код: Выделить всё

while(!v1) { (doing some tasks not related to v1 and v2); }
if(v2 == 0) { (do something); }
Проблема, с которой я сталкиваюсь, заключается в том, что v2 иногда устанавливается в 0, когда while заканчивается. while завершается, когда v1 становится истинным. (some_var) оказывается ненулевым. Использование gcc.
Что мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/787 ... rong-value

Вернуться в «Linux»