0
在獲取結果並將Post_Bits清除至其原始狀態Post_Bits &= (~Post);
之前禁用中斷並在先前看到特定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);
}
因爲如果在第5行和第6行之間發生中斷,並且設置了正在檢查的位,您將清除該位但報告爲未設置:因此缺少該事件。 –
中斷不是線程,線程安全是不同的野獸。 –