RTOS体験シリーズ ⑨共有資源とMutex 今回は、「共有資源とMutex」 を実際に体験します。前回は、MonitorTaskを追加して、FadeTaskが正常に動き続けているかをHeartbeat(生存確認)で監視し、異常があれば強制停止する構造を作りました。その中でFadeTaskとMonitorTaskは、同じg_stateという共有状態を使っていました。今回は、その共有状態を複数のタスクから扱うときに起きる問題と、それを防ぐためのMutexを体験します。複数のタスクが同じ変数を読み書きすると、タイミングによっては少し不思議な状態が見えることがあります。Mutexを使うと、その見え方がどう変わるのか。今回のサンプルでは、Mutex OFF / ON を切り替えながら、Serial Monitorで実際に確認していきます。 この動画のポイント・Mutexで共有状態を守る考え方・xSemaphoreCreateMutex / xSemaphoreTake / xSemaphoreGive の基本・Mutex OFF / ON で何が変わるのか・Serial Monitorで動作の違いを確認する流れ・RTOSで共有変数を扱うときの注意点RTOSでは、複数のタスクが同じ変数を読み書きする場面があります。そのとき、ただ変数を共有するだけで本当に大丈夫なのか。今回は、共有状態g_stateを例に、Mutexが必要になる場面をコードと動作確認を通して体験していきます。 サンプルプログラム サンプルプログラムをダウンロードしてください。 ダウンロード 参考サイト・文献など ◆VSCodeのドキュメントhttps://code.visualstudio.com/docs◆ESP32-WROOM-32https://documentation.espressif.com/esp32-wroom-32_datasheet_en.pdf◆前回動画⑧監視タスクと強制停止https://youtu.be/COXxMtiaUoA※これらの公式サイトは予告なく変更される場合があります。ご了承ください。