tinykernel
読み取り中…
検索中…
一致する文字列を見つけられません
tk::Mutex クラス

所有権・優先度順ウェイクアップ・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 が利用可能です。

{
// クリティカルセクション...
} // 自動でアンロック
ミューテックスのロックをスコープ単位で安全に管理する RAII クラス (std::lock_guard 相当)
定義 sync.hpp:211
所有権・優先度順ウェイクアップ・RAII 対応のミューテックス (排他ロック)
定義 sync.hpp:123
void lock()
ミューテックスをロックします (空くまでブロック待機)
定義 sync.hpp:132

構築子と解体子

◆ Mutex()

tk::Mutex::Mutex ( )
default

関数詳解

◆ is_locked()

bool tk::Mutex::is_locked ( ) const
inline

現在ロックされているかどうかを判定

◆ lock()

void tk::Mutex::lock ( )
inline

ミューテックスをロックします (空くまでブロック待機)

他のタスクが保持している場合は、解放されるまで自タスクを State::Blocked にして休止します。

◆ try_lock()

bool tk::Mutex::try_lock ( )
inline

ミューテックスのロックを試みます (ノンブロッキング)

戻り値
true ロック獲得成功
false 他のタスクが保持しているため獲得失敗 (ブロックせず即座に復帰)

◆ unlock()

void tk::Mutex::unlock ( )
inline

ミューテックスのロックを解除します

ロックを保持しているタスク本人だけが解除できます。 待機中のタスクが存在する場合、最も優先度が高いタスクを 1 つ起床させます。


このクラス詳解は次のファイルから抽出されました:
  • C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp