C ++ Thread, общие данные

У меня есть приложение, в котором запущены 2 потока ... Есть ли какая-то уверенность, что когда я изменю глобальную переменную из одного потока, другой заметит это изменение? У меня нет какой-либо системы синхронизации или взаимного исключения ... но должен ли этот код работать постоянно (представьте глобальнуюbool названныйdataUpdated):

Тема 1:

while(1) {
    if (dataUpdated)
        updateScreen();
    doSomethingElse();
}

Тема 2:

while(1) {
    if (doSomething())
        dataUpdated = TRUE;
}

Оптимизирует ли такой компилятор, как gcc, этот код таким образом, что он не проверяет глобальное значение, а только учитывает его значение во время компиляции (поскольку он никогда не изменяется при одном и том же значении)?

PS: Будучи таковым для игрового приложения, на самом деле не имеет значения, будет ли чтение во время записи значения ... все, что имеет значение, - это то, что изменение замечено другим потоком.

Ответы на вопрос(10)

Ваш ответ на вопрос