一、原子操作与原子性
原子操作(atomic operation)是并发编程中的一个核心概念,指的是在多线程环境中,一个操作一旦开始,就不会被其他线程的操作打断,直至该操作完成。这种不可分割的特性保证了操作的原子性,即要么全部做完,要么全部不做。原子操作在多线程编程中非常重要,因为它能有效避免数据竞争和条件竞争等问题,从而确保程序的正确性和稳定性。
C++11引入了原子操作,通过<atomic>头文件提供了一系列原子类型和函数,如std::atomic<T>,用于确保对共享数据的操作是原子的。原子类型提供了一系列成员函数来执行原子操作,这些操作包括加载(load)、存储(store)、加法(fetch_add、add)、减法(fetch_sub、sub)、交换(exchange)和比较并交换(compare_exchange_weak、compare_exchange_strong)等。
二、原子变量赋值操作
在C++中,原子变量赋值是通过std::atomic模板类实现的,提供了多种方法来对原子变量进行赋值和修改。以下是一些常见的原子变量赋值操作及其示例:
-
基本赋值
基本赋值操作是使用赋值运算符(=)直接将一个新值赋给原子变量。例如:
std::atomic<int> counter(0); // 声明一个原子整数变量,初始值为0
counter = 10; // 将10赋给counter
-
原子加法与减法
使用
fetch_add、add


379

被折叠的 条评论
为什么被折叠?



