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

計数セマフォ (Counting Semaphore) / バイナリセマフォ More...

#include <sync.hpp>

Public Member Functions

 Semaphore (int32_t initial_count=1, int32_t max_count=1)
 セマフォを初期化します
void acquire ()
 資源を獲得するまで現在のタスクをブロックします
bool try_acquire ()
 資源の獲得を試みます (ノンブロッキング)
void release ()
 資源を返却し、待機中タスクがあれば最優先度のタスクを 1 つ起床させます
int32_t count () const

Detailed Description

計数セマフォ (Counting Semaphore) / バイナリセマフォ

資源の獲得・返却によるタスク間同期を行います。資源がない場合はタスクが State::Blocked に遷移して休止し、返却時に優先度の高いタスクから順に起床します。

tk::Semaphore sem(0, 5); // 初期値0、最大5
// タスク側 (資源が空くまでブロック待機)
sem.acquire();
// シグナル送信側 (割り込みや他タスクから返却・通知)
sem.release();
計数セマフォ (Counting Semaphore) / バイナリセマフォ
Definition sync.hpp:24

Constructor & Destructor Documentation

◆ Semaphore()

tk::Semaphore::Semaphore ( int32_t initial_count = 1,
int32_t max_count = 1 )
inlineexplicit

セマフォを初期化します

Parameters
initial_count初期資源カウント (省略時: 1)
max_count最大資源カウント (省略時: 1)

Member Function Documentation

◆ acquire()

void tk::Semaphore::acquire ( )
inline

資源を獲得するまで現在のタスクをブロックします

資源カウントが 0 以下の場合はタスクが休止状態になり、CPU は他タスクへ譲渡されます (CPU消費ゼロ)。

◆ count()

int32_t tk::Semaphore::count ( ) const
inline

現在の資源カウントを取得

◆ release()

void tk::Semaphore::release ( )
inline

資源を返却し、待機中タスクがあれば最優先度のタスクを 1 つ起床させます

◆ try_acquire()

bool tk::Semaphore::try_acquire ( )
inline

資源の獲得を試みます (ノンブロッキング)

Returns
true 獲得成功 (カウントが 1 減算された)
false 資源がないため獲得失敗 (ブロックせず即座に復帰)

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