同期処理を行うための条件変数です。
[詳解]
#include "nn/nlib/threading/CondVar.h"
|
constexpr | CondVar () noexcept=default |
| デフォルトコンストラクタです。
|
|
void | Notify () noexcept |
| ウェイトしているスレッドの1つ以上にシグナルします。 [詳解]
|
|
void | NotifyAll () noexcept |
| ウェイトしているスレッド全てにシグナルします。
|
|
template<class lock_type > |
errno_t | Wait (lock_type &lock) noexcept NLIB_REQUIRES(lock) |
| ウェイトします。 [詳解]
|
|
template<class lock_type > |
errno_t | WaitFor (lock_type &lock, const nlib_ns::TimeSpan &timeout) noexcept NLIB_REQUIRES(lock) |
| 期間を指定したタイムアウトつきのウェイトをします。 [詳解]
|
|
template<class lock_type > |
errno_t | WaitUntil (lock_type &lock, const nlib_ns::DateTime &datetime) noexcept NLIB_REQUIRES(lock) |
| 日時を指定したタイムアウトつきのウェイトをします。 [詳解]
|
|
同期処理を行うための条件変数です。
- 説明
- 共有されている情報がある条件を満たした場合にスレッドを起床させたい場合に利用します。
条件を満たすまでWait()
関数で待ち続け、Notify()
, NotifyAll()
で起床します。
pthread_cond
や、WindowsのCONDITION_VARIABLE
と同様の機能です。
SimpleCriticalSection m;
bool flag;
if (!cond.Initialize()) { エラー; }
....
m.lock();
while (!flag) {
if (e != 0) { エラー; }
}
....
flag = false;
m.unlock();
CondVar.h の 46 行目に定義があります。
◆ Notify()
nn::nlib::threading::CondVar::Notify |
( |
| ) |
|
|
inlinenoexcept |
ウェイトしているスレッドの1つ以上にシグナルします。
- 説明
- 長い間シグナルを受け取れないスレッドが発生する可能性があるため、
NotifyAll()
の利用をお勧めします。
CondVar.h の 62 行目に定義があります。
◆ Wait()
template<class lock_type >
nn::nlib::threading::CondVar::Wait |
( |
lock_type & |
lock | ) |
|
|
inlinenoexcept |
ウェイトします。
- 引数
-
- 戻り値
-
0 | エラーは発生していません |
ENOMEM | システムリソースが足りない場合 |
CondVar.h の 76 行目に定義があります。
◆ WaitFor()
template<class lock_type >
nn::nlib::threading::CondVar::WaitFor |
( |
lock_type & |
lock, |
|
|
const nlib_ns::TimeSpan & |
timeout |
|
) |
| |
|
inlinenoexcept |
期間を指定したタイムアウトつきのウェイトをします。
- 引数
-
[in,out] | lock | CriticalSection 等のlock() , unlock() メンバ関数を持つクラスです。 |
[in] | timeout | タイムアウト時間です。 |
- 戻り値
-
0 | エラーは発生していません |
ETIMEDOUT | タイムアウトした場合 |
ENOMEM | システムリソースが足りない場合 |
CondVar.h の 84 行目に定義があります。
◆ WaitUntil()
template<class lock_type >
nn::nlib::threading::CondVar::WaitUntil |
( |
lock_type & |
lock, |
|
|
const nlib_ns::DateTime & |
datetime |
|
) |
| |
|
inlinenoexcept |
日時を指定したタイムアウトつきのウェイトをします。
- 引数
-
[in,out] | lock | CriticalSection 等のlock() , unlock() メンバ関数を持つクラスです。 |
[in] | datetime | タイムアウト期限です。 |
- 戻り値
-
0 | エラーは発生していません |
ETIMEDOUT | タイムアウトした場合 |
ENOMEM | システムリソースが足りない場合 |
CondVar.h の 89 行目に定義があります。
このクラス詳解は次のファイルから抽出されました: