std::atomic<int> 举例使用
时间: 2023-08-07 14:03:23 浏览: 171
C++11并发编程关于原子操作atomic的代码示例
5星 · 资源好评率100%
下面是一个使用 std::atomic<int> 的示例代码:
```cpp
#include <iostream>
#include <thread>
#include <atomic>
std::atomic<int> counter(0);
void increment_counter() {
for (int i = 0; i < 1000000; ++i) {
++counter; // 自增操作会自动转换为原子操作
}
}
int main() {
std::thread t1(increment_counter);
std::thread t2(increment_counter);
t1.join();
t2.join();
std::cout << "Final counter value is " << counter << std::endl; // 原子地读取计数器的最终值
return 0;
}
```
在这个例子中,我们同样创建了一个 std::atomic<int> 类型的计数器,并在两个线程中并发地对它进行自增操作。由于 std::atomic<int> 已经重载了自增运算符,因此我们可以直接使用 ++counter 进行自增操作,它会自动转换为原子操作。最后,我们同样使用 counter 变量来读取计数器的最终值,并输出到控制台上。
阅读全文