C++11 聚一个多线程用原子变量的例子
下面是一个使用C++11的多线程和原子变量的例子:
#include <iostream>
#include <thread>
#include <atomic>
std::atomic<int> counter(0);
void incrementCounter() {
for (int i = 0; i < 1000000; i++) {
counter++;
}
}
int main() {
std::thread thread1(incrementCounter);
std::thread thread2(incrementCounter);
thread1.join();
thread2.join();
std::cout << "Counter value: " << counter << std::endl;
return 0;
}
在这个例子中,我们定义了一个原子整数变量counter,它可以被多个线程同时访问和修改,而不会发生数据竞争。然后我们创建了两个线程,每个线程都会执行incrementCounter函数,该函数会对counter进行1000000次自增操作。最后,我们等待两个线程执行完毕,并输出最终的counter值。
需要注意的是,在C++11中,原子变量可以通过++运算符进行自增操作,而不需要使用互斥锁。这样可以提高多线程程序的性能。
另外,原子变量还支持其他的原子操作,比如--、+=、-=等等,可以根据需要选择合适的操作。
原文地址: https://www.cveoy.top/t/topic/i8r1 著作权归作者所有。请勿转载和采集!