当一个任务写入变量而其他任务读取该变量时,我们是否需要信号量?

Ank*_*sal 2 c embedded multithreading freertos esp32

我正在研究 freeRtos,并且我有一个名为 x 的变量。现在,每秒只有一个任务正在写入该变量,而其他任务正在读取该变量值。我需要用互斥锁来保护变量吗?

Tom*_*m V 5

如果变量为 32 位或更小,并且其值是独立的并且不与任何其他变量一起解释,则不需要互斥体。

如果您有一个大于 32 位的数据项,或者您有多个必须保持在一起的数据项(例如:记录亮度和颜色的光传感器),那么您需要一个互斥体,以便读者无法获取其中的一部分旧数据和部分新数据。