1#pragma once
2
3#include <nn/os/detail/os_InternalCriticalSection.h>
4#include <nn/os/os_ConditionVariableCommon.h>
5#include <nn/types.h>
6
7namespace nn::os::detail {
8
9class TimeoutHelper;
10
11class InternalConditionVariableImplByHorizon {
12public:
13 InternalConditionVariableImplByHorizon();
14 void Initialize();
15 void Signal();
16 void Broadcast();
17 void Wait(InternalCriticalSection*);
18 ConditionVariableStatus TimedWait(InternalCriticalSection*, const TimeoutHelper&);
19
20private:
21 uint32_t m_Value;
22};
23
24typedef InternalConditionVariableImplByHorizon InternalConditionVariableImpl;
25
26} // namespace nn::os::detail