野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9102|回复: 1

写RTOS程序的时候,不同进程间共享的全局变量切记加volatile

[复制链接]
发表于 2017-11-28 18:19:49 | 显示全部楼层 |阅读模式
本帖最后由 smallcsduck 于 2017-11-28 18:49 编辑

比如1号进程使用一个全局变量x
而这个x在2号进程里会被修改
如果你不加volatile
1号进程里的x值可能你会发现不会被2号进程修改
不是你程序写错了
而是c编译器帮你优化了,因为在1号进程里x没有被修改,编译器可能在你使用x的时候都没有生成去读x变量的语句 直接把初期给你了
当然编译器不同,优化行为也可能是不一样的,可能有的编译器已经实现了能识别这种情况。

用DMA传输数据的变量也要加

回复

使用道具 举报

发表于 2017-11-29 09:01:57 | 显示全部楼层
嗯,这个是得注意,虽然知道这东西,但在写程序很多时候会忘记
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 12:23 , Processed in 0.025091 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表