让一个线程修改原子单元(例如字符)而另一个线程仅读取它是否安全? 当然,在允许这样做的环境中,例如 freertos。
我得到了一些执行此操作的代码,它使用 bool (定义为 char)作为信号量,我不确定为什么他们不使用信号量只是为了清楚起见,但话又说回来,我看不到使用 char 确实有危险。
最佳答案
它是安全的如果:
1.您的处理器在单个指令中读取一个字符(这很可能)
2.您的处理器架构在执行指令时外部中断不会改变控制流。
3.仅当您的变量通过 ISR 更新时,第 2 点才有效
关于c - FreeRTOS 跨线程读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24085970/