12#include <bits/pthreadtypes.h>
54 mutable pthread_cond_t
cond;
69 int res = pthread_mutex_init(&this->
mutex,
nullptr);
73 res = pthread_cond_init(&this->
cond,
nullptr);
83 int res = pthread_cond_destroy(&this->
cond);
85 res = pthread_mutex_destroy(&this->
mutex);
88 this->
mutex = ev.mutex;
92 ev.mutex = pthread_mutex_t{};
93 ev.cond = pthread_cond_t{};
103 int res = pthread_cond_destroy(&this->
cond);
105 res = pthread_mutex_destroy(&this->
mutex);
115 pthread_mutex_lock(&this->
mutex);
119 pthread_cond_broadcast(&this->
cond);
124 pthread_cond_signal(&this->
cond);
126 pthread_mutex_unlock(&this->
mutex);
135 pthread_mutex_lock(&this->
mutex);
154 int res = pthread_cond_wait(&this->
cond, &this->
mutex);
158 pthread_mutex_unlock(&this->
mutex);
167 bool timeOutOccured =
false;
168 pthread_mutex_lock(&this->
mutex);
187 timeSpec.tv_sec = ms / 1000;
188 timeSpec.tv_nsec = (ms - timeSpec.tv_sec * 1000) * 1000000;
190 int res = pthread_cond_timedwait(&this->
cond, &this->
mutex, &timeSpec);
192 if (ETIMEDOUT == res)
194 timeOutOccured =
true;
197 }
while(!locked && !timeOutOccured);
198 pthread_mutex_unlock(&this->
mutex);
199 return !timeOutOccured;
217 pthread_mutex_lock(&this->
mutex);
219 pthread_mutex_unlock(&this->
mutex);
void Reset()
manually reset the event
Definition linuxevent.h:215
LinuxEvent(const LinuxEvent &ev)=default
copy constructor
LinuxEvent & operator=(const LinuxEvent &ev)=default
copy assignment operator
bool WaitTimeout(int ms) const
wait for the event with timeout in millisecs, resets the event
Definition linuxevent.h:165
bool manualReset
Definition linuxevent.h:56
EventStatus
Definition linuxevent.h:47
@ SIGNAL_ALL
Definition linuxevent.h:50
@ SIGNAL_ONE
Definition linuxevent.h:49
@ SIGNAL_NONE
Definition linuxevent.h:48
pthread_mutex_t mutex
Definition linuxevent.h:53
bool Peek() const
check if event is signaled
Definition linuxevent.h:206
void Signal()
signal the event
Definition linuxevent.h:113
void Wait() const
wait for the event to become signalled, resets the event
Definition linuxevent.h:133
pthread_cond_t cond
Definition linuxevent.h:54
bool IsManual() const
Returns true if event is manually reset.
Definition linuxevent.h:226
~LinuxEvent()
destructor
Definition linuxevent.h:101
volatile EventStatus status
Definition linuxevent.h:57
LinuxEvent(bool manualReset=false)
constructor
Definition linuxevent.h:64
#define n_assert(exp)
Definition debug.h:50
Definition linuxcompletioncounter.h:15