gpt4 book ai didi

c++ - 多个读者可以通过获取/释放顺序与相同的作者同步吗?

转载 作者:行者123 更新时间:2023-12-02 01:56:32 26 4
gpt4 key购买 nike

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

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};

如果我们只有一个读者,一切正常,但我们可以在 t2 或 t3 线程中断言失败吗?

最佳答案

这是在 writer 中存储到 i 和从 i 加载之间的先行关系的教科书示例reader 线程。

涉及多个读者并不重要。 b 的存储与所有观察到更新值的读者同步(由于循环,这最终会发生)。

我认为您要找的报价是:

An atomic operation A that performs a release operation on an atomic object M synchronizes with an atomicoperation B that performs an acquire operation on M and takes its value from any side effect in the releasesequence headed by A.

并没有说这仅限于单次加载操作

关于c++ - 多个读者可以通过获取/释放顺序与相同的作者同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69554728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com