例如:

#include <atomic>

std::atomic_bool atomicBool(false);
int sharedVariable = 0;

void work() {
  if (atomicBool) {
    sharedVariable++; //will this line protected by atomic variable?
  }
}
语句sharedVariable++;会被atomicBool保护为线程安全吗?
如果不是(我猜不是文件的一瞥),这是否意味着这种情况下我仍然需要使用互斥锁?

最佳答案

编号
原子变量不是互斥体。
除了对自己进行读写操作外,它们不保护任何其他内容。
即使他们做到了,使用这种语法,变量也无法“知道”其命名范围。
听起来sharedVariable应该是原子的,尽管如果您还有更多要作为实际代码中的块保护的语句,那还是不够的。

10-06 13:58