nlib
nn::nlib::threading::Semaphore クラス

セマフォを実装しています。 [詳解]

#include "nn/nlib/threading/Semaphore.h"

公開メンバ関数

errno_t Init (int initial_count) noexcept
 セマフォを初期化します。 [詳解]
 
errno_t Release (int *previous_count) noexcept
 セマフォを1つリリースします。 [詳解]
 
errno_t Release (int release_count, int *previous_count) noexcept
 セマフォを複数個リリースします。 アトミックには実行されないかもしれません。 [詳解]
 
errno_t Acquire () noexcept
 セマフォを1つロックします。 [詳解]
 
errno_t TryAcquire () noexcept
 セマフォのロックを試みます。 [詳解]
 
errno_t TryAcquire (const nlib_ns::TimeSpan &timeout) noexcept
 セマフォをタイムアウトつきで1つロックします。 [詳解]
 

詳解

セマフォを実装しています。

説明
win32での実装
win32 APIをラップしています。
linux/cygwinでの実装
posixセマフォをラップしています。
CTRでの実装
nn::os::Semaphore をラップしています。

Semaphore.h25 行目に定義があります。

関数詳解

◆ Acquire()

nn::nlib::threading::Semaphore::Acquire ( )
inlinenoexcept

セマフォを1つロックします。

戻り値
0ロックできた場合
EINVALセマフォが有効でない場合

Semaphore.h40 行目に定義があります。

◆ Init()

nn::nlib::threading::Semaphore::Init ( int  initial_count)
inlinenoexcept

セマフォを初期化します。

引数
[in]initial_countセマフォの初期値
戻り値
0初期化が成功した場合
EINVALinitialCountが大きすぎる場合

Semaphore.h31 行目に定義があります。

◆ Release() [1/2]

nn::nlib::threading::Semaphore::Release ( int *  previous_count)
inlinenoexcept

セマフォを1つリリースします。

引数
[out]previous_countNULL以外を指定すると以前のセマフォの値が格納されます。
戻り値
0成功した場合
EINVALセマフォが有効でない場合
EOVERFLOWセマフォが既に最大カウントの場合

Semaphore.h34 行目に定義があります。

◆ Release() [2/2]

nn::nlib::threading::Semaphore::Release ( int  release_count,
int *  previous_count 
)
inlinenoexcept

セマフォを複数個リリースします。 アトミックには実行されないかもしれません。

引数
[in]release_countリリースするセマフォのカウント数です。
[out]previous_countNULL以外を指定すると以前のセマフォの値が格納されます。
戻り値
0成功した場合
EINVALセマフォが有効でない場合
EOVERFLOWセマフォが最大カウントを超える場合。この場合の実行後のセマフォカウントは不定になります。
ENOTSUPプラットフォームが複数個のリリースがサポートしていない場合。

Semaphore.h37 行目に定義があります。

◆ TryAcquire() [1/2]

nn::nlib::threading::Semaphore::TryAcquire ( )
inlinenoexcept

セマフォのロックを試みます。

戻り値
0ロックできた場合
EAGAINロックできなかった場合

Semaphore.h41 行目に定義があります。

◆ TryAcquire() [2/2]

nn::nlib::threading::Semaphore::TryAcquire ( const nlib_ns::TimeSpan timeout)
inlinenoexcept

セマフォをタイムアウトつきで1つロックします。

引数
[in]timeoutタイムアウト時間
戻り値
0ロックできた場合
EINVALセマフォが有効でない場合
ETIMEDOUTタイムアウトした場合

Semaphore.h44 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: