gpt4 book ai didi

c++ - 使用宽松的原子 bool 值来同步两个线程

转载 作者:太空狗 更新时间:2023-10-29 21:32:46 26 4
gpt4 key购买 nike

<分区>

我和一些同事正在讨论用于同步两个线程的宽松原子 bool 值。我们进行了一些在线研究,发现了其他处理松弛原子的示例和片段,但我们未能从适用于我们的示例的那些中得出任何结论。

以下原子 bool 值在两个线程之间共享。

std::atomic_bool stopping{false};

第一个线程进入一个循环,只有在设置了原子 bool 值后才退出。请注意,每次循环迭代的负载都标记为松弛。

// Thread 1
while (!stopping.load(std::memory_order_relaxed))
{
// ...
}

在第一个线程进入循环后的某个时刻(由其他一些同步机制保证),第二个线程执行以下语句。再次注意,这里的商店标记为放松。

// Thread 2
stopping.store(true, std::memory_order_relaxed);

问题:从纯理论的角度,第一个线程是否保证退出循环;为什么?


就我们认为理解松散原子而言,我们认为加载操作不能保证看到写操作的修改。但其他online examples concerning thread-safe counters让我们相信负载最终会接受修改...

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