FreeRTOS Cross Thread Read

时间:2014-06-06 15:52:25

标签: c multithreading thread-safety multitasking freertos

让一个线程修改一个原子单元(例如一个char)而另一个只读取它是否安全? 在一个允许这样做的环境中,比如freertos。

我已经得到了一些代码就是这样,它使用bool(定义为char)作为信号量,我不确定为什么他们为了清晰起见没有使用信号量,但是我又一次不能看到真正使用炭的危险。

1 个答案:

答案 0 :(得分:1)

安全如果:

1.您的处理器在单个指令中读取一个字符(非常可能)

2.您的处理器架构不能在执行指令时外部中断可以改变控制流程。

3.只有在您的变量通过ISR

更新时,才能使用Point 2