acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
condition.h
1#pragma once
2
3
4#include "acme/_operating_system.h"
5
6
7#include "condition_variable.h"
8
9
10class CLASS_DECL_ACME condition :
11 virtual public particle
12{
13public:
14
15#if defined(LINUX) || defined(__APPLE__) || defined(SOLARIS) || defined(__BSD__)
16
17 iptr m_hsync;
18 bool m_bManualEvent;
19 bool m_bSignaled; // meaningful only when m_bManualEvent
20 ::i32 m_iSignalId; // meaningful only when m_bManualEvent
21
22#elif defined(__ANDROID__)
23
24 bool m_bSignaled;
25 ::i32 m_iHold;
26 pthread_mutex_t m_mutex;
27 pthread_cond_t m_cond;
28
29#else
30
31 CRITICAL_SECTION m_criticalsection;
32 condition_variable m_conditionvariable;
33
34#endif
35
36
37 condition();
38 ~condition() override;
39
40
41 //using synchronization::lock;
42 //virtual bool lock(const class time & timeWait);
43
44 using particle::unlock;
45 virtual void unlock() override;
46
47 virtual void * get_os_data() const;
48
49 bool pulse_happening();
50 bool set_happening();
51 //bool set_happening() { return set_happening(); }
52 //bool pulse_happening();
53 bool reset_happening();
54
55
59
61 ::e_status wait() override;
62
66 ::e_status wait (const class time & timeWait) override;
67
68 bool is_signaled() const;
69
70};
71
::e_status wait() override
Session independent waitables (windows version).
Definition condition.cpp:169
Definition e_status.h:30
Definition aaa_time.h:13