26 TSemaphore::TSemaphore(Int_t initial) : fValue(initial), fWakeups(0)
35 Int_t TSemaphore::Wait()
37 std::unique_lock<std::mutex> lk(fMutex);
43 }
while (fWakeups < 1);
57 Int_t TSemaphore::Wait(Int_t millisec)
60 if (millisec <= 0)
return Wait();
63 std::unique_lock<std::mutex> lk(fMutex);
67 std::cv_status cvs = std::cv_status::timeout;
69 cvs = fCond.wait_for(lk,std::chrono::milliseconds(millisec));
70 }
while (fWakeups < 1 && cvs != std::cv_status::timeout);
71 if (cvs == std::cv_status::timeout) {
87 Int_t TSemaphore::TryWait()
89 std::unique_lock<std::mutex> lk(fMutex);
103 Int_t TSemaphore::Post()
105 std::unique_lock<std::mutex> lk(fMutex);