相关疑难解决方法(0)

什么是std :: atomic?

我明白这std::atomic<>是一个原子对象.但原子到什么程度?根据我的理解,操作可以是原子的.使对象成为原子意味着什么?例如,如果有两个线程同时执行以下代码:

a = a + 12;
Run Code Online (Sandbox Code Playgroud)

然后是整个操作(比方说add_twelve_to(int))原子?或者是变量原子(so operator=())的变化?

c++ multithreading atomic c++11

129
推荐指数
3
解决办法
9万
查看次数

标准的原子布尔和原子旗之间的区别

我不知道std::atomic变量,但是知道std::mutex标准提供的(奇怪的权利!); 然而有一件事引起了我的注意:标准提供了两种看似相同(对我而言)的原子类型,如下所示:

  1. std::atomic<bool> 类型

  2. std::atomic_flag 类型

它也以 - 的例子提到std::atomic_flag type-

std :: atomic_flag是一种原子布尔类型.与std :: atomic的所有特化不同,它保证是无锁的.与std :: atomic不同,std :: atomic_flag不提供加载或存储操作.

我不明白.std::atomic bool type不保证是无锁的吗?那它不是原子的还是什么?

那么两者之间有什么区别呢?我应该在何时使用哪种?

c++ multithreading atomic thread-safety c++11

45
推荐指数
2
解决办法
8254
查看次数

标签 统计

atomic ×2

c++ ×2

c++11 ×2

multithreading ×2

thread-safety ×1