原子操作C++代码实现
时间: 2023-07-11 22:04:25 浏览: 111
C++ 11 开发中的 Atomic 原子操作.rar_C++11、原子_atomic c++_c++ atomic使用_c++
5星 · 资源好评率100%
原子操作是指在多线程编程中,确保一个操作的执行是不可分割的,即在同一时刻只能由一个线程执行,以防止数据竞争。在C++11标准中,提供了原子操作的支持,可以使用std::atomic类来实现原子操作。
下面是一个简单的原子操作示例,实现一个计数器:
```
#include <iostream>
#include <atomic>
#include <thread>
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 << "Counter value: " << counter << std::endl;
return 0;
}
```
在上面的示例中,我们定义了一个std::atomic<int>类型的counter变量作为计数器,并且在increment_counter函数中使用++运算符进行自增操作。由于counter是std::atomic类型,因此++运算符被重载为原子操作,可以确保在同一时刻只有一个线程执行这个操作。
在主函数中,我们创建了两个线程并启动它们,它们会同时对计数器进行自增操作。由于原子操作的支持,我们可以确保计数器的最终值是正确的。
阅读全文