【发布时间】:2013-04-25 14:38:02
【问题描述】:
atomic<bool> 不是多余的,因为bool 本质上是原子的吗?我认为不可能有部分修改的 bool 值。我什么时候真的需要使用atomic<bool> 而不是bool?
【问题讨论】:
-
你需要
atomic<bool>来避免竞争条件。如果两个线程访问相同的内存位置,并且其中至少一个是写操作,则会发生竞争条件。如果您的程序包含竞争条件,则行为未定义。 -
@nosid:是的,但是 OP 的意思是他不相信你可以像你一样对 bool 进行 partial 写操作,比如说
int值,您将分别复制该值的每个字节或字。因此,如果写入已经是原子的,则不应存在任何竞争条件。 -
如果没有 atomic,则无法保证您将在另一个线程中看到更新,或者您将看到变量更新的顺序与您在不同线程中创建它们的顺序相同.
标签: c++ c++11 atomic stdatomic