|
tinykernel
|
計数セマフォ (Counting Semaphore) / バイナリセマフォ [詳解]
#include <sync.hpp>
公開メンバ関数 | |
| Semaphore (int32_t initial_count=1, int32_t max_count=1) | |
| セマフォを初期化します | |
| void | acquire () |
| 資源を獲得するまで現在のタスクをブロックします | |
| bool | try_acquire () |
| 資源の獲得を試みます (ノンブロッキング) | |
| void | release () |
| 資源を返却し、待機中タスクがあれば最優先度のタスクを 1 つ起床させます | |
| int32_t | count () const |
計数セマフォ (Counting Semaphore) / バイナリセマフォ
資源の獲得・返却によるタスク間同期を行います。資源がない場合はタスクが State::Blocked に遷移して休止し、返却時に優先度の高いタスクから順に起床します。
|
inlineexplicit |
セマフォを初期化します
| initial_count | 初期資源カウント (省略時: 1) |
| max_count | 最大資源カウント (省略時: 1) |
|
inline |
資源を獲得するまで現在のタスクをブロックします
資源カウントが 0 以下の場合はタスクが休止状態になり、CPU は他タスクへ譲渡されます (CPU消費ゼロ)。
|
inline |
現在の資源カウントを取得
|
inline |
資源を返却し、待機中タスクがあれば最優先度のタスクを 1 つ起床させます
|
inline |
資源の獲得を試みます (ノンブロッキング)