イベントフラグ【event flag】
概要

イベントフラグは符号なし整数型の変数として実装され、多くの場合は32ビットのビット列が用いられる。各ビットは個別のイベントに対応づけられている。例えば、あるビットを「ボタンが押された」、別のビットを「データ受信が完了した」といった任意のイベントに割り当てることができる。
イベントが発生すると、送信側のタスクや割り込み処理が対応するビットを「1」にセットし、それを別のタスクへ伝達する。受信側のタスクは、対象のビットが立つまで処理をブロックして待機する。このとき、指定したすべてのビットが立った時点で待機を解除する「AND待ち」と、いずれか一つが立った時点で解除する「OR待ち」を選択できる実装が多く、複雑なタスク間の実行順序や連携を制御できる。イベント通知後に対応ビットを自動で「0」に戻すオートクリア機能を備えるOSもある。
似た同期機構に「セマフォ」(semaphore)や「ミューテックス」(mutex)などがあるが、これらは主に資源の排他制御や同時利用数の管理に用いられる。これに対しイベントフラグは、複数の異なるイベントの発生状態を一つの変数でまとめて管理し通知することを目的としており、用途が異なる。μITRONに代表されるRTOSではイベントフラグが標準的な同期機構として定義されており、家電や車載機器、産業機器など、メモリやCPU資源が限られた組み込み環境で広く利用されている。
(2026.6.9更新)