リアルタイムOSのセマフォリアルタイムOSのセマフォ(★)[組み込み製品、リアルタイムOS、組み込みドライバーの開発依頼は、フィールドデザインまでお気軽にお問い合わせください。最初になぜ排他制御用のセマフォが必要なのかを説明します。あるハードウェアに複数のタスクからアクセスする場合に、何も考えないでコードを書くと下記のようになります。0)を抜けてしまい、両方のタスクで同じハードウェアを操作してしまうことになります。while()でlockを待っている間は、自分より優先順位の低いタスクは動作できないという問題もあります。簡単な解決策としては、lockの変数を操作する部分を割り込み禁止にしておけば、taskAからtaskBに移る要因となる割り込みが発生しないので、問題は解決します。あらゆるところに割り込み禁止のコードがあって、しかも割り込み禁止解除を忘れたりする危険性もあるので、コードが読みにくくなったり、バグが発生しやすくなったりもします。セマフォ(排他制御)の例セマフォを使うと下記のように簡単に書くことができます。複数のタスクで安全にハードウェアのアクセスができ、かつ、CPUも有効に利用できます。最初になぜ同期用のセマフォが必要なのかを説明します。あるハードウェアに紐づいた割り込みルーチンからデータを受け取るコードを、何も考えないで書くと下記のようになります。//valueの値を利用する。//ハードウェアのデータを読み込む}しかし、このコードでは、while()で待っている時間は、自分より優先順位の低い他のタスクが動作できません。セマフォ(同期)の例セマフォを使うと下記のように簡単に書くことができます。CPUも有効に利用できます。//valueの値を利用する。