Что делает компилятор C++, чтобы гарантировать, что разные, но соседние области памяти можно безопасно использовать в раC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что делает компилятор C++, чтобы гарантировать, что разные, но соседние области памяти можно безопасно использовать в ра

Сообщение Anonymous »

Предположим, у меня есть структура:

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

struct Foo {
char a;  // read and written to by thread 1 only
char b;  // read and written to by thread 2 only
};
Насколько я понимаю, стандарт C++ гарантирует безопасность вышеописанного, когда два потока работают в двух разных местах памяти.
Однако я думаю, что, поскольку char a и char b находятся в одной и той же строке кэша, компилятор должен выполнить дополнительную синхронизацию.

Что именно здесь происходит?

Подробнее здесь: https://stackoverflow.com/questions/533 ... mory-locat
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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