2017-06-23 9 views
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); 
} 
+1

5行目と6行目の間に割り込みが発生し、調べているビットをセットすると、ビットがクリアされますが、設定されていないと報告されるため、そのイベントはありません。 –

+1

割り込みはスレッドではなく、スレッドセーフは別の獣です。 –

答えて

1

は必ずコード・フラグメントは、いつでも唯一つのスレッドで実行されることを確認する最も簡単な方法です。

関連する問題