17#ifndef CYBER_BASE_WAIT_STRATEGY_H_
18#define CYBER_BASE_WAIT_STRATEGY_H_
21#include <condition_variable>
44 std::unique_lock<std::mutex> lock(mutex_);
53 std::condition_variable cv_;
60 : sleep_time_us_(sleep_time_us) {}
63 std::this_thread::sleep_for(std::chrono::microseconds(sleep_time_us_));
68 sleep_time_us_ = sleep_time_us;
72 uint64_t sleep_time_us_ = 10000;
79 std::this_thread::yield();
94 : time_out_(
std::chrono::milliseconds(timeout)) {}
99 std::unique_lock<std::mutex> lock(mutex_);
100 if (cv_.wait_for(lock, time_out_) == std::cv_status::timeout) {
109 time_out_ = std::chrono::milliseconds(timeout);
114 std::condition_variable cv_;
115 std::chrono::milliseconds time_out_;
void BreakAllWait() override
bool EmptyWait() override
void NotifyOne() override
bool EmptyWait() override
SleepWaitStrategy(uint64_t sleep_time_us)
bool EmptyWait() override
void SetSleepTimeMicroSeconds(uint64_t sleep_time_us)
bool EmptyWait() override
void NotifyOne() override
void SetTimeout(uint64_t timeout)
void BreakAllWait() override
TimeoutBlockWaitStrategy(uint64_t timeout)
TimeoutBlockWaitStrategy()
virtual void BreakAllWait()
virtual bool EmptyWait()=0
bool EmptyWait() override