Re[4]: Порядок создания объектов
От: _NN_ www.nemerleweb.com
Дата: 31.05.23 15:47
Оценка:
Здравствуйте, 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.
Но что если у нас два процессора где первый записал себе значение, но оно не дошло до памяти и второй процессор ещё его не видит ?
Кто даст гарантию если не явный барьер памяти, что есть видимость во всех процессорах ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.