下面是一个使用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中,原子变量可以通过++运算符进行自增操作,而不需要使用互斥锁。这样可以提高多线程程序的性能。

另外,原子变量还支持其他的原子操作,比如--+=-=等等,可以根据需要选择合适的操作。

C++11 聚一个多线程用原子变量的例子

原文地址: https://www.cveoy.top/t/topic/i8r1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录