CAS与原子操作

什么是原子操作?
  • 原子操作是一种在执行过程中不会被中断的操作。它要么完全执行成功,要么完全不执行,确保在操作完成之前其他线程不会看到操作的中间状态。
原子操作的实现
  1. CAS

    • CAS是由 CPU 提供的原子指令 。在硬件级别 上确保操作的原子性。不涉及上下文切换,性能高
    • 主要用途:单个变量更新
  2. posix锁机制:mutex互斥锁、spinlock自旋锁

    • 互斥锁依赖CAS,且涉及上下文切换,开销大
    • 主要用途:保护代码临界区,涉及多条cpu指令和变量的更新
  3. std::atomic

    • C++ 提供了 std::atomic 类,即原子变量 。它封装了底层的原子指令c++对原子变量的操作确保原子性

    • 基于cas实现

    • std::atomic 的内存序

    • std::atomic 还提供了内存序(memory ordering)选项,这决定了原子操作的可见性和顺序约束。例如:

    • memory_order_relaxed:不提供额外的同步或顺序保证。

    • memory_order_acquire:保证在原子操作之前的操作对当前线程可见。

    • memory_order_release:保证在原子操作之后的操作对其他线程可见。

    • memory_order_acq_rel:同时保证 acquire 和 release 语义。

    • memory_order_seq_cst:提供最严格的顺序保证。

推荐学习 https://xxetb.xetslk.com/s/p5Ibb

相关推荐
charlie1145141919 小时前
Cinux · musl 静态移植:对齐 Linux ABI、铺初始栈,以及一个被 SMAP 拦下的潜伏 bug
linux·开发语言·c++·操作系统·开源项目
布莱克60520 小时前
软中断和硬中断的区别
开发语言·操作系统
噜~噜~噜~2 天前
操作系统笔记-2.3.2.1 进程互斥的软件实现方法
笔记·操作系统
冬奇Lab3 天前
开源项目第198期:Omarchy — DHH 打造的「意见鲜明」Linux 桌面系统
人工智能·开源·操作系统
噜~噜~噜~4 天前
操作系统笔记-2.2.6 多处理机调度
笔记·操作系统
拂拉氏6 天前
【Linux】 开发工具(Makefile、git、cgdb)解析与对于操作系统的基础认识
linux·git·操作系统·makefile·cgdb
程序猿乐锅7 天前
【王道操作系统| 第五章】I/O管理
操作系统
我爱cope8 天前
【操作系统 | 管程、消息通信、屏障与 RCU:并发协作的几种组织方式】
学习·操作系统
程序猿乐锅8 天前
【王道操作系统| 第三章】内存管理
操作系统
mifengxing11 天前
操作系统 文件系统
笔记·操作系统·计算机408