在获得结果并将Post_Bits清除为原始状态Post_Bits &= (~Post);
并在之前看到特定帖子res = Post_Bits & Post;
时测试条件时,禁用中断的重点是什么?
例如,如果在另一个函数上使用Post_Bits
并且您在此处更改它,那么在禁用/启用中断内清除它会使其线程安全吗?
BOOL Post_a_Note(Post_t Post) // Post_t is a 32bit number
{
Post_t res; //Final Result
UINT16 capture = INTDisableInterrupts();
res = Post_Bits & Post;
Post_Bits &= (~Post);
INTRestoreInterrupts(capture);
return (res != 0);
}
答案 0 :(得分:1)
禁用中断是确保代码片段在任何时候只由一个线程执行的最简单方法。