尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

理解原子变量之三:原子性与memory_order_relaxed

理解原子变量之三:原子性与memory_order_relaxed
📅 发布时间:2026/7/5 21:11:19

目录

CPU与内存的关系

原子性

典型使用场景


在本系列的第一篇文章理解原子变量之一:从互斥锁到原子变量,最粗浅的认识_原子互斥-CSDN博客,我通过几个实例从感性认识的角度介绍了原子性。本文在第一篇文章的基础上,从理性认识的角度进一步讲述原子性的含义。下一篇文章将详细描述可见性。

CPU与内存的关系

现代的CPU一般都是多核(core)CPU,CPU与内存的关系如下图所示。下面的图来自大白话C++之:一文搞懂C++多线程内存模型(Memory Order)_c++ memory order-CSDN博客

原子性

可见,CPU通常不会直接对主内存(RAM)进行读写,因为CPU的核(core)与RAM之间隔了几级的缓存(cache),以及寄存器。
假如内存里有一个变量a,cpu给该变量+1的过程可能是这样的:先把新的值写入cache,然后把cache的内容写入ram。可见,这个写入过程可能不是一步完成的。假如在这个过程里,另一个cpu的core也要操作a++,那么两个线程之间就可能发生访问冲突。理想情况下,既然两个线程分别要给a+1,那么最后a的结果应该+2才对。但是最后a的结果可能没有+2,而是仅仅+1.这便是对原子性的破坏。
在std::memory_order - cppreference.com有一段对memory_order_relaxed功能的描述:

仅对此操作要求原子性。

这里,任何遵守原子性的操作,都保证本操作是不可分割的,即在执行遵守原子性的操作,不能被在中途被其他操作插入干预。这也是std::memory_order的6个内存序都必须满足的要求,当然也就是原子操作的最低要求。

在前一篇文章理解原子变量之二:从volatile到内存序-进一步的认识-CSDN博客里,我提到了原子变量的功能分为三部分:原子性、可见性和限制指令重排。memory_order_relaxed仅具备原子性,不保证可见性和限制指令重排,所以它是6种内存序里面最弱的内存序。

典型使用场景

store操作与fetch_add操作是运用memory_order_relaxed的典型场景。既然fetch_add遵守memory_order_relaxed次序,则取数据,再加上,然后储存回去就是一套不可分割的连贯动作。见std::memory_order - cppreference.com

下一篇文章将结合另外两个内存序memory_order_acquire与 memory_order_release描述可见性。

相关新闻

  • 从零实现Google OAuth 2.0登录:Node.js后端集成与安全实践
  • Twitter API Client测试策略:单元测试与集成测试完整指南
  • twitter-api-php测试策略:使用PHPUnit进行API集成测试

最新新闻

  • 若依框架Swagger调试实战:解决认证失败与404问题
  • 四大主流大模型对比:Claude Sonnet 4.6、Gemini 3.1 Pro、GLM 5与豆包实测分析
  • 6DoF运动跟踪技术:从IMU传感器到姿态解算全解析
  • YOLO环境搭建与实时目标检测实战指南
  • DeepSeek大模型企业级部署实战:十万预算下的能力评测与成本核算
  • InfiniteYou:基于扩散模型的身份保持图像生成技术解析

日新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号