C++ 内存操作,使用原子,针对变量 x。
std::atomic<int> x;
char cache[1024];
主题 1:
memset(cache, 0, 1024);
x.store(20, std::memory_order::release);
主题 2:
int z = x.load(std::memory_order::acquire);
char c = cache[20];
在这种场景下,缓存本身不是原子的,我们能否保证线程2读取缓存时,会得到线程1写入的值?
是的,使用内存顺序释放和获取对 x 进行原子操作可确保“缓存”中非原子操作的正确同步和排序