c++atomic 用法
时间: 2024-06-01 09:07:10 浏览: 153
C++ Concurrency in Action
C++中的atomic是一个原子类型,可以保证在多线程并发访问时的数据安全性。使用atomic类型可以避免多线程访问同一变量时的数据竞争问题,从而提高程序的并发性能。
atomic类型的使用方式和普通类型差不多,只需要在变量声明时加上atomic即可。例如:
```c++
#include <atomic>
#include <iostream>
using namespace std;
int main() {
atomic<int> num(0);
num++; // 自增操作是原子操作
cout << num << endl;
return 0;
}
```
在上面的代码中,我们使用了一个atomic<int>类型的变量num,对其进行自增操作时,可以确保自增操作的原子性。
除了自增操作,还有其他常用的atomic操作,比如:
- 加法操作:fetch_add()
- 减法操作:fetch_sub()
- 交换操作:exchange()
- 逻辑与/或/异或操作:fetch_and(), fetch_or(), fetch_xor()
需要注意的是,atomic类型只能用于支持原子操作的数据类型,比如整型、指针等。如果要使用其他类型,可以通过重载运算符实现。
阅读全文