tk::Mutex sync.hpp bool bool tk::Mutex::locked_ locked_ tk::Mutex::locked_ {false} uint8_t uint8_t tk::Mutex::owner_slot_ owner_slot_ tk::Mutex::owner_slot_ {0xFF} task_mask_t task_mask_t tk::Mutex::wait_mask_ wait_mask_ tk::Mutex::wait_mask_ {0} tk::Mutex::Mutex ()=default Mutex tk::Mutex::Mutex void void tk::Mutex::lock () lock tk::Mutex::lock ミューテックスをロックします (空くまでブロック待機) 他のタスクが保持している場合は、解放されるまで自タスクを State::Blocked にして休止します。 bool bool tk::Mutex::try_lock () try_lock tk::Mutex::try_lock ミューテックスのロックを試みます (ノンブロッキング) true ロック獲得成功 false 他のタスクが保持しているため獲得失敗 (ブロックせず即座に復帰) void void tk::Mutex::unlock () unlock tk::Mutex::unlock ミューテックスのロックを解除します ロックを保持しているタスク本人だけが解除できます。 待機中のタスクが存在する場合、最も優先度が高いタスクを 1 つ起床させます。 bool bool tk::Mutex::is_locked () const is_locked tk::Mutex::is_locked 現在ロックされているかどうかを判定 所有権・優先度順ウェイクアップ・RAII 対応のミューテックス (排他ロック) 共有リソースやペリフェラルへの同時アクセスを防止します。 ロックしたタスク本人以外の誤った unlock() は安全に無視されます。 C++ の BasicLockable を満たしており、std::lock_guard や tk::LockGuard が利用可能です。 tk::Mutexmtx; { tk::LockGuard<tk::Mutex>lock(mtx); //クリティカルセクション... }//自動でアンロック tk::Mutexis_locked tk::Mutexlock tk::Mutexlocked_ tk::MutexMutex tk::Mutexowner_slot_ tk::Mutextry_lock tk::Mutexunlock tk::Mutexwait_mask_