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 clock_gettime(CLOCK_REALTIME, &target);
188 int secs = ms / 1000;
189 time_t remainder = (ms - secs * 1000L);
190 target.tv_sec += secs;
191 target.tv_nsec += remainder * 1000000L;
193 int res = pthread_cond_timedwait(&this->
cond, &this->
mutex, &target);
195 if (ETIMEDOUT == res)
197 timeOutOccured =
true;
200 }
while(!locked && !timeOutOccured);
201 pthread_mutex_unlock(&this->
mutex);
202 return !timeOutOccured;
220 pthread_mutex_lock(&this->
mutex);
222 pthread_mutex_unlock(&this->
mutex);
void Reset()
manually reset the event
Definition linuxevent.h:218
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:209
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:229
~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