Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, _NN_, Вы писали:
_NN>>А если у нас есть инициализация переменной ?
BFE>Простая инициализация сама по себе мало что меняет, а вот использование переменной — да.
_NN>>_NN>>int i{ 10 };
_NN>>std::thread t( [&i] { printf("%d", i); } );
_NN>>
_NN>>Как я понимаю даже если компилятор понимает, что порядок менять нельзя, присваивание значения 10 может не отразится при чтении из другого потока. Верно ?
BFE>Нет. В этом случае i гарантированно будет инициализировано до создания ссылки на i.
Хорошо, i содержит 10, ссылка ссылается на памить i.
Но что если у нас два процессора где первый записал себе значение, но оно не дошло до памяти и второй процессор ещё его не видит ?
Кто даст гарантию если не явный барьер памяти, что есть видимость во всех процессорах ?