title: tk::Semaphore summary: 計数セマフォ (Counting Semaphore) / バイナリセマフォ
計数セマフォ (Counting [Semaphore]()) / バイナリセマフォ More...
#include <sync.hpp>
| Name | |
|---|---|
| Semaphore(int32_t initial_count =1, int32_t max_count =1) セマフォを初期化します |
|
| void | acquire() 資源を獲得するまで現在のタスクをブロックします |
| bool | try_acquire() 資源の獲得を試みます (ノンブロッキング) |
| void | release() 資源を返却し、待機中タスクがあれば最優先度のタスクを 1 つ起床させます |
| int32_t | count() const |
class tk::Semaphore;
計数セマフォ (Counting [Semaphore]()) / バイナリセマフォ
資源の獲得・返却によるタスク間同期を行います。資源がない場合はタスクが State::Blocked に遷移して休止し、返却時に優先度の高いタスクから順に起床します。
tk::Semaphore sem(0, 5); // 初期値0、最大5
// タスク側 (資源が空くまでブロック待機)
sem.acquire();
// シグナル送信側 (割り込みや他タスクから返却・通知)
sem.release();
inline explicit Semaphore(
int32_t initial_count =1,
int32_t max_count =1
)
セマフォを初期化します
Parameters:
inline void acquire()
資源を獲得するまで現在のタスクをブロックします
資源カウントが 0 以下の場合はタスクが休止状態になり、CPU は他タスクへ譲渡されます (CPU消費ゼロ)。
inline bool try_acquire()
資源の獲得を試みます (ノンブロッキング)
Return:
inline void release()
資源を返却し、待機中タスクがあれば最優先度のタスクを 1 つ起床させます
inline int32_t count() const
現在の資源カウントを取得
Updated on 2026-10-02 at 14:01:32 +0900