当前位置: 首页 > news >正文

【单片机】位域非原子写的风险

单字节变量的写是原子操作,但是位域,比如a.bit0和a.bit1的写,和“a++”属于“读-改-写”。

举个例子,比如a.bit0和a.bit1,现在a是0,低优先级线程给a.bit0置1,然后高优先级线程给a.bit1置1,结束后发现,a.bit0是1,a.bit1是0。高优先级操作被覆盖了。

先读出一个临时变量,改完这个临时变量,再将临时变量写回去(原子操作问题无法用volatile处理)。

位域的非原子操作问题,如果位域的各个bit之间没有关联,可以用独立整数处理,因为独立整数(小于总线大小)的写是原子操作。如果有关联,位域就等价为一个结构体,只能用锁处理。

https://www.kdocs.cn/l/ccVU83rvWaXF

http://www.jsqmd.com/news/581713/

相关文章:

  • javaweb文创产品商城众筹平台设计与实现
  • 从理论到实践:锁相环(PLL)在FOC电机控制中的核心算法与参数调优
  • 乌鲁木齐玖拾捌空间设计装修设计效果好吗,详细解读公司概况 - 工业品牌热点
  • 如何用开源工具openLCA轻松完成产品碳足迹分析:完整实践指南
  • 新手福音:告别复杂opencode下载,用快马AI生成可学可用的入门项目
  • 从系统编程到 JavaScript/TypeScript
  • 智能提取与效率工具:B站视频转文字全流程自动化解决方案
  • SpringBoot与LangChain4j实战:多模型动态切换与OpenAI/DeepSeek集成指南
  • 微信小程序接入Pixel Couplet Gen避坑指南:跨域、CORS与Token配置
  • 基于Matlab粒子群算法PSO的水、火电系统优化调度
  • SAP财务凭证冲销全攻略:FB08、AB08、VF11、FBRA实战避坑指南
  • 原神帧率解锁技术:突破游戏性能限制的实现方案与应用指南
  • 告别枯燥手册:用CANoe LINstress实战模拟总线异常,手把手教你做车载网络压力测试
  • Veeam Recovery Orchestrator 13 P1 (Windows) - 恢复编排
  • nginx 拦截境外访问
  • WindowResizer终极指南:3步解决Windows窗口尺寸限制问题
  • Ostrakon-VL-8B惊艳效果:同一张图中同步输出商品清单/空位坐标/价签文本
  • 京东e卡回收懒人须知的三条热门途径 - 淘淘收小程序
  • LTE网络优化实战:5种切换事件参数配置详解(附现网案例)
  • 3种数字记忆拯救方案:用GetQzonehistory守护你的QQ空间青春档案
  • JPEGView终极指南:为什么这款轻量级图像查看器是Windows用户的必备工具?
  • 基于SpringBoot与Graphormer构建药物发现微服务API
  • 聊聊2026年新疆好用的装修设计企业,诚信品牌 - 工业推荐榜
  • ROS2 Humble实战:用QoS解决机器人通信丢包,保姆级代码配置避坑
  • 破解音乐格式限制难题:ncmdump工具让音频转换变得简单
  • intv_ai_mk11 GPU高效利用:通过量化推理(AWQ)进一步降低A10显存占用方案
  • Cyber Engine Tweaks:重构赛博朋克2077体验的游戏引擎增强工具
  • 手把手带你玩转40nm SAR ADC设计
  • ExplorerPatcher彻底清理指南:系统优化与残留解决全方案
  • 2026高端整木定制十大品牌深度盘点:工艺与交付能力对比 - Amonic