读完“行动中的并发”后,我找不到一个问题的答案 - 当我们在一个原子变量上有一个存储(释放)和许多加载(获取)时,读取副作用的标准是否有保证?假设我们有:
int i{};
atomic<bool> b{};
void writer(){
i=42;
b.store(true,memory_order_release);
}
void reader(){
while(!b.load(memory_order_acquire))
this_thread::yield();
assert(i==42);
}
//---------------------
thread t1{writer},t2{reader},t3{reader};
Run Code Online (Sandbox Code Playgroud)
如果我们只有一个读取器,一切都可以,但是我们是否可以在 t2 或 t3 线程中断言失败?