Plasma Engine  2.0
Loading...
Searching...
No Matches
ConditionVariable.h
1#pragma once
2
3#include <Foundation/Basics.h>
4#include <Foundation/Threading/Implementation/ThreadingDeclarations.h>
5#include <Foundation/Threading/Mutex.h>
6
21class PL_FOUNDATION_DLL plConditionVariable
22{
23 PL_DISALLOW_COPY_AND_ASSIGN(plConditionVariable);
24
25public:
26 enum class WaitResult
27 {
28 Signaled,
29 Timeout
30 };
31
34
36 void Lock();
37
39 plResult TryLock();
40
42 void Unlock();
43
47 void SignalOne();
48
52 void SignalAll();
53
59 void UnlockWaitForSignalAndLock() const;
60
67 WaitResult UnlockWaitForSignalAndLock(plTime timeout) const;
68
69private:
70 mutable plInt32 m_iLockCount = 0;
71 mutable plMutex m_Mutex;
72 mutable plConditionVariableData m_Data;
73};
Condition variables are used to put threads to sleep and wake them up upon certain events.
Definition ConditionVariable.h:22
Provides a simple mechanism for mutual exclusion to prevent multiple threads from accessing a shared ...
Definition Mutex.h:13
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12