|
tinykernel
|
所有権・優先度順ウェイクアップ・RAII 対応のミューテックス (排他ロック) [詳解]
#include <sync.hpp>
公開メンバ関数 | |
| Mutex ()=default | |
| void | lock () |
| ミューテックスをロックします (空くまでブロック待機) | |
| bool | try_lock () |
| ミューテックスのロックを試みます (ノンブロッキング) | |
| void | unlock () |
| ミューテックスのロックを解除します | |
| bool | is_locked () const |
所有権・優先度順ウェイクアップ・RAII 対応のミューテックス (排他ロック)
共有リソースやペリフェラルへの同時アクセスを防止します。 ロックしたタスク本人以外の誤った unlock() は安全に無視されます。 C++ の BasicLockable を満たしており、std::lock_guard や tk::LockGuard が利用可能です。
|
default |
|
inline |
現在ロックされているかどうかを判定
|
inline |
ミューテックスをロックします (空くまでブロック待機)
他のタスクが保持している場合は、解放されるまで自タスクを State::Blocked にして休止します。
|
inline |
ミューテックスのロックを試みます (ノンブロッキング)
|
inline |
ミューテックスのロックを解除します
ロックを保持しているタスク本人だけが解除できます。 待機中のタスクが存在する場合、最も優先度が高いタスクを 1 つ起床させます。