【发布时间】:2016-07-15 10:39:31
【问题描述】:
在多任务环境中。如果任务具有表达式y = x + x;,是否有可能在两次读取 x 之间发生中断(任务切换)。
【问题讨论】:
-
简短的回答是这不太可能,但可能
-
如果
x是由另一个线程同时修改和/或由信号处理程序异步修改的对象,并且a不是原子的,也不是无锁原子的或@987654324 类型@ 在信号处理程序的情况下,行为是 undefined. -
在某些架构上,甚至不能保证可以使用单个原子指令获取单个
x(例如,long long在 y = 2 * x 也不会是线程安全的。 -
以上三个 cmets 可以有用地详细说明为答案 - 答案不应作为 cmets 发布。 cmets 的合法用途是解释为什么该问题值得被否决——对我来说这似乎是一个合理的问题——尽管标题有点模糊。
标签: c real-time interrupt multitasking rtos