9 #ifndef RTCTK_DATATASK_SEMAPHORE_HPP
10 #define RTCTK_DATATASK_SEMAPHORE_HPP
13 #include <condition_variable>
29 std::unique_lock<std::mutex> lock(m_mtx);
36 std::unique_lock<std::mutex> lock(m_mtx);
37 m_cv.wait(lock, [&]{
return m_count != 0;});
41 template <
class Rep,
class Period>
42 inline void Wait(std::chrono::duration<Rep, Period> timeout) {
43 std::unique_lock<std::mutex> lock(m_mtx);
44 auto ret = m_cv.wait_for(lock, timeout, [&]{
return m_count != 0;});
46 throw(std::runtime_error(
"Semaphor.Wait() timed out"));
52 std::unique_lock<std::mutex> lock(m_mtx);
62 std::unique_lock<std::mutex> lock(m_mtx);
69 std::condition_variable m_cv;