在多线程和中断中的变量需要加 volatile关键字来告诉编译器不要优化该变量,每次都从内存地址读取而不是寄存器的备份,但是我阅读了ucOSiii的源码,发现里面没有用到这个关键字,比如像 OSIntNestingCtr 这种在中断中更新,用来记录中断嵌套层次的变量都没有使用 volatile关键字,这样的代码在开启优化的时候不会出问题吗?uc是成熟的代码了,肯定不会犯这种错误,这里是另有什么玄机我没发现码,有谁知道咋回事?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>