10 #ifndef CTRL_UTILS_SEMAPHORE_H_
11 #define CTRL_UTILS_SEMAPHORE_H_
13 #include <condition_variable>
22 inline void acquire() {
23 std::unique_lock<std::mutex> lock(m_);
24 cv_.wait(lock, [
this]() {
return val_; });
29 std::unique_lock<std::mutex> try_lock(m_, std::try_to_lock);
30 if (!try_lock)
return false;
35 inline void release() {
36 std::unique_lock<std::mutex> lock(m_);
43 std::condition_variable cv_;
52 inline void acquire() {
53 std::unique_lock<std::mutex> lock(m_);
54 cv_.wait(lock, [
this]() {
return val_ > 0; });
59 std::unique_lock<std::mutex> try_lock(m_, std::try_to_lock);
60 if (!try_lock)
return false;
65 inline void release() {
66 std::unique_lock<std::mutex> lock(m_);
73 std::condition_variable cv_;
Definition: semaphore.h:18
Definition: semaphore.h:48