Допустим, у меня есть структура:
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 попадают в одну и ту же строку кэша, компилятор должен выполнить дополнительную синхронизацию.
Что именно здесь происходит?