1.16、原子操作是什么?

原子操作(Atomic Operation)是指在多线程或多处理器环境下,执行时不可被中断的操作。它保证了操作的不可分割性——一旦开始执行,就会一直执行到完成,中间不会被线程切换或其他操作干扰,从而避免竞态条件和数据不一致问题。

从硬件层面讲,以x86架构为例,CPU通过“LOCK”前缀指令对总线加锁,确保该指令执行期间总线被锁定,其他CPU无法访问相关内存,保证了操作的原子性。这通常涉及到缓存一致性协议和总线锁机制,确保多核环境下数据的一致性和同步。

在C++中,原子操作由标准库中的std::atomic模板类支持,提供了对基本类型和用户自定义类型的原子访问。它不仅保证单个操作的原子性,还支持多种内存序(memory order),以控制操作的可见性和重排序,满足不同的同步需求。例如,std::atomic提供了原子加载(load)、存储(store)、比较交换(compare_exchange)等操作,这些操作在编译器和CPU层面都不会被拆分或重排。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)

阅读剩余
THE END