小编Des*_*ise的帖子

多个读取器可以通过获取/释放顺序与同一写入器同步吗?

读完“行动中的并发”后,我找不到一个问题的答案 - 当我们在一个原子变量上有一个存储(释放)和许多加载(获取)时,读取副作用的标准是否有保证?假设我们有:

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 线程中断言失败?

c++ atomic memory-model memory-barriers stdatomic

2
推荐指数
1
解决办法
223
查看次数

标签 统计

atomic ×1

c++ ×1

memory-barriers ×1

memory-model ×1

stdatomic ×1