C ++ Thread, общие данные
У меня есть приложение, в котором запущены 2 потока ... Есть ли какая-то уверенность, что когда я изменю глобальную переменную из одного потока, другой заметит это изменение? У меня нет какой-либо системы синхронизации или взаимного исключения ... но должен ли этот код работать постоянно (представьте глобальнуюbool названныйdataUpdated):
Тема 1:
while(1) {
if (dataUpdated)
updateScreen();
doSomethingElse();
}
Тема 2:
while(1) {
if (doSomething())
dataUpdated = TRUE;
}
Оптимизирует ли такой компилятор, как gcc, этот код таким образом, что он не проверяет глобальное значение, а только учитывает его значение во время компиляции (поскольку он никогда не изменяется при одном и том же значении)?
PS: Будучи таковым для игрового приложения, на самом деле не имеет значения, будет ли чтение во время записи значения ... все, что имеет значение, - это то, что изменение замечено другим потоком.