tinykernel
Loading...
Searching...
No Matches
tk::Mutex Class Reference

所有権・優先度順ウェイクアップ・RAII 対応のミューテックス (排他ロック) More...

#include <sync.hpp>

Public Member Functions

 Mutex ()=default
void lock ()
 ミューテックスをロックします (空くまでブロック待機)
bool try_lock ()
 ミューテックスのロックを試みます (ノンブロッキング)
void unlock ()
 ミューテックスのロックを解除します
bool is_locked () const

Detailed Description

所有権・優先度順ウェイクアップ・RAII 対応のミューテックス (排他ロック)

共有リソースやペリフェラルへの同時アクセスを防止します。 ロックしたタスク本人以外の誤った unlock() は安全に無視されます。 C++ の BasicLockable を満たしており、std::lock_guard や tk::LockGuard が利用可能です。

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

Constructor & Destructor Documentation

◆ Mutex()

tk::Mutex::Mutex ( )
default

Member Function Documentation

◆ 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

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

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

◆ unlock()

void tk::Mutex::unlock ( )
inline

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

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


The documentation for this class was generated from the following file:
  • C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/include/tinykernel/sync.hpp