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

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

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

公開メンバ関数

errno_t Init (int initialCount) noexcept
 セマフォを初期化します。 [詳解]
 
errno_t Release (int *previousCount) noexcept
 セマフォを1つリリースします。 [詳解]
 
errno_t Release (int releaseCount, int *previousCount) 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.h12 行目に定義があります。

関数詳解

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

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

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

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

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

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

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

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

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

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

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

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

nn::nlib::threading::Semaphore::Release ( int  releaseCount,
int *  previousCount 
)
inlinenoexcept

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

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

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

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

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

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

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

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

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

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

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


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