4#include "Stroika/Foundation/StroikaPreComp.h"
8#include "Stroika/Foundation/Execution/Common.h"
10#include "WaitableEvent.h"
44 if (WaitUntilQuietly (timeoutAt) == WaitStatus::eTimeout) {
45#if USE_NOISY_TRACE_IN_THIS_MODULE_
58#if USE_NOISY_TRACE_IN_THIS_MODULE_
62 unique_lock<mutex> lock{fConditionVariable.fMutex};
63 if (fConditionVariable.wait_until (lock, Time::Pin2SafeSeconds (timeoutAt), [
this] () { return fTriggered; })) [[likely]] {
64 return WaitStatus::eTriggered;
67 Assert (timeoutAt <= Time::GetTickCount ());
68 return WaitStatus::eTimeout;
77DISABLE_COMPILER_MSC_WARNING_START (4996);
78DISABLE_COMPILER_GCC_WARNING_START (
"GCC diagnostic ignored \"-Wdeprecated-declarations\"");
79DISABLE_COMPILER_CLANG_WARNING_START (
"clang diagnostic ignored \"-Wdeprecated-declarations\"");
80constexpr WaitableEvent::ResetType WaitableEvent::eAutoReset;
81constexpr WaitableEvent::ResetType WaitableEvent::eManualReset;
82DISABLE_COMPILER_MSC_WARNING_END (4996);
83DISABLE_COMPILER_GCC_WARNING_END (
"GCC diagnostic ignored \"-Wdeprecated-declarations\"");
84DISABLE_COMPILER_CLANG_WARNING_END (
"clang diagnostic ignored \"-Wdeprecated-declarations\"");
86#if qStroika_Foundation_Debug_AssertionsChecked
89#if qStroika_Foundation_Execution_WaitableEvent_SupportWaitForMultipleObjects
90 Require (fExtraWaitableEvents_.empty ());
97#if USE_NOISY_TRACE_IN_THIS_MODULE_
101#if qStroika_Foundation_Execution_WaitableEvent_SupportWaitForMultipleObjects
102 [[maybe_unused]] lock_guard critSec{sExtraWaitableEventsMutex_};
103 for (
const auto& i : fExtraWaitableEvents_) {
time_point< RealtimeClock, DurationSeconds > TimePointSeconds
TimePointSeconds is a simpler approach to chrono::time_point, which doesn't require using templates e...
Duration is a chrono::duration<double> (=.
void CheckForInterruption()
void ThrowError(error_code ec)
throw a SystemErrorException with the given error_code - or std::bad_alloc for errc::not_enough_memor...