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

相关推荐
fakerth13 小时前
【OpenHarmony】输入法imf框架
操作系统·openharmony
Trouvaille ~15 小时前
【Linux】UDP Socket编程实战(二):网络字典与回调设计
linux·运维·服务器·网络·c++·udp·操作系统
凉、介15 小时前
静态路由探究
网络·笔记·操作系统·嵌入式
_OP_CHEN19 小时前
【Linux系统编程】(二十六)一文吃透 Ext 系列文件系统软硬链接:原理、实战与底层逻辑揭秘
linux·操作系统·文件系统·c/c++·硬链接·软链接·ext2文件系统
fleaxin20 小时前
统信服务器操作系统V20(1070)安装过程
docker·操作系统·nvidia·统信
_OP_CHEN2 天前
【Linux系统编程】(二十五)从路径到挂载:Ext 系列文件系统的 “导航” 与 “整合” 核心揭秘
linux·操作系统·文件系统·c/c++·ext2文件系统·路径解析·挂载分区
HalvmånEver3 天前
Linux:线程 ID 与地址空间布局:深入理解线程内存分布(线程七)
linux·运维·服务器·操作系统·线程
Trouvaille ~4 天前
【Linux】线程同步与互斥(四):线程池与任务管理
linux·运维·服务器·c++·操作系统·线程池·日志系统
燃于AC之乐4 天前
【Linux系统编程】Shell解释器完全实现:从命令解析、环境变量管理到内建命令的全面解析
linux·操作系统·命令行工具·进程控制·shell编程
2401_841495644 天前
【操作系统】存储器管理算法
python·操作系统·存储器管理·连续内存分配算法·非连续内存分配算法·虚拟存储页面置换算法·内存碎片整理与回收算法