3 #ifndef INCLUDE_NN_NLIB_THREADING_CONDVAR_H_
4 #define INCLUDE_NN_NLIB_THREADING_CONDVAR_H_
8 #include "nn/nlib/threading/CondVarFallback.h"
16 #ifndef NLIB_CONDVAR_USE_FALLBACK
36 #ifdef NLIB_CXX11_CONSTEXPR
63 template <
class lock_type>
71 template <
class lock_type>
74 return nlib_cond_wait_for(&m_Cond, detail::GetRawMutex(lock), timeout.ToTimeValue().tick);
76 template <
class lock_type>
80 datetime.ToTimeValue().tick);
89 inline errno_t CondVar::WaitFor(SimpleCriticalSection& lock,
91 NLIB_LOCK_REQUIRED(lock) {
92 return nlib_cond_wait_for(&m_Cond, detail::GetRawMutex(lock), timeout.ToTimeValue().tick);
96 inline errno_t CondVar::WaitUntil(SimpleCriticalSection& lock,
98 NLIB_LOCK_REQUIRED(lock) {
108 #endif // INCLUDE_NN_NLIB_THREADING_CONDVAR_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
void NotifyAll() noexcept
ウェイトしているスレッド全てにシグナルします。
void Notify() noexcept
ウェイトしているスレッドの1つ以上にシグナルします。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
ミューテックス, 再入可能ミューテックス, 再入とタイムアウトが可能なミューテックスを実装しています。 ...
errno_t Wait(lock_type &lock) noexcept
ウェイトします。
constexpr CondVar() noexcept
デフォルトコンストラクタです。
errno_t WaitUntil(lock_type &lock, const nlib_ns::DateTime &datetime) noexcept
日時を指定したタイムアウトつきのウェイトをします。
errno_t WaitFor(lock_type &lock, const nlib_ns::TimeSpan &timeout) noexcept
期間を指定したタイムアウトつきのウェイトをします。