一.新的内存模型线程安全处理:
C++11 引入了新的内存模型,定义了多线程环境下对共享数据的访问和修改行为。同时,它还提供了对原子类型和无锁编程的支持。
在 C++11 中,可以使用 std::atomic
模板类来实现原子操作。std::atomic
提供了一组原子操作,包括加载、存储、递增、递减等。这些操作是线程安全的,可以保证在多线程环境下对共享数据的正确访问和修改。
二.下面是一个简单的示例,展示了如何使用 std::atomic
进行原子操作:
#include <iostream>
#include <atomic>
#include <thread>
std::atomic<int> counter(0);
void increment() {
for (int i = 0; i < 100000; ++i) {
++counter;
}
}
int main() {
std::thread t1(increment);
std::thread t2(increment);
t1.join();
t2.join();
std::cout << "Counter: " << counter << std::endl;
return 0;
}
运行结果: