9#include <condition_variable>
29 std::unique_lock<std::mutex> lock(mutex);
33 [
this] {
return wakeups > 0; });
41 std::unique_lock<std::mutex> lock(mutex);
44 std::chrono::duration<double>
ctime(timeout);
45 cond.wait_for(lock,
ctime, [
this] {
return wakeups > 0; });
59 std::unique_lock<std::mutex> lock(mutex);
70 std::lock_guard<std::mutex> lock(mutex);
80 std::condition_variable cond;
103 return mPriv->waitWithTimeout(timeoutInSeconds);
108 return mPriv->check();
Private(Private &)=delete
bool waitWithTimeout(double timeout)
virtual ~Private()=default
Private & operator=(Private &)=delete
Private(unsigned int initialCount=1)
A mini-server for performing network communication in the background.
A class for thread synchronization and mutual exclusion.
virtual ~Semaphore()
Destructor.
bool waitWithTimeout(double timeoutInSeconds)
Try to decrement the counter, even if we must wait - but don't wait forever.
void wait()
Decrement the counter, even if we must wait to do that.
bool check()
Decrement the counter, unless that would require waiting.
void post()
Increment the counter.
Semaphore(unsigned int initialCount=1)
Constructor.