メニュー 閉じる

⑨共有資源とMutex

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-32
https://documentation.espressif.com/esp32-wroom-32_datasheet_en.pdf

◆前回動画
⑧監視タスクと強制停止
https://youtu.be/COXxMtiaUoA

※これらの公式サイトは予告なく変更される場合があります。ご了承ください。