c++——atomic以及内存顺序详解
简介
原子性操作库(atomic)是C++11中新增的标准库,它提供了一种线程安全的方式来访问和修改共享变量,避免了数据竞争的问题,对值进行在多线程的行为明确定义,使得不同的线程访问这个包含的值不会导致数据竞争,但是只支持基本数据类型,包括bool
、char
、short
、int
、long
、long long
等基本数据类型,以及intmax_t
、uintmax_t
、intptr_t
等扩展类型,对于用户自定义类型,需要使用 std::atomic<T*>。
template <class T> struct atomic;
示例代码
#include <atomic>
#include <iostream>
#include <thread>
std::atomic<int> counter(0);
void incrementCounter() {
for (int i = 0; i < 100000; ++i) {
counter.fetch_add(1, std::memory_order_relaxed);
}
}
int main() {
std::thread