13#ifndef RTCTK_DATATASK_SEMAPHORE_HPP
14#define RTCTK_DATATASK_SEMAPHORE_HPP
16#include <condition_variable>
33 std::unique_lock<std::mutex> lock(m_mtx);
40 std::unique_lock<std::mutex> lock(m_mtx);
41 m_cv.wait(lock, [&] {
return m_count != 0; });
45 template <
class Rep,
class Period>
46 inline void Wait(std::chrono::duration<Rep, Period> timeout) {
47 std::unique_lock<std::mutex> lock(m_mtx);
48 auto ret = m_cv.wait_for(lock, timeout, [&] {
return m_count != 0; });
50 throw(std::runtime_error(
"Semaphore.Wait() timed out"));
56 std::unique_lock<std::mutex> lock(m_mtx);
66 std::unique_lock<std::mutex> lock(m_mtx);
73 std::condition_variable m_cv;
Definition: semaphore.hpp:26
void Wait(std::chrono::duration< Rep, Period > timeout)
Definition: semaphore.hpp:46
void Post()
Definition: semaphore.hpp:31
bool TryWait()
Definition: semaphore.hpp:55
void Clear()
Definition: semaphore.hpp:65
void Wait()
Definition: semaphore.hpp:39
Semaphore(int count=0)
Definition: semaphore.hpp:28
Definition: computationBase.hpp:33