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_;
122 #endif // CYBER_BASE_WAIT_STRATEGY_H_ virtual bool EmptyWait()=0
TimeoutBlockWaitStrategy(uint64_t timeout)
Definition: wait_strategy.h:93
Definition: wait_strategy.h:75
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
void SetTimeout(uint64_t timeout)
Definition: wait_strategy.h:108
Definition: wait_strategy.h:30
BlockWaitStrategy()
Definition: wait_strategy.h:40
void BreakAllWait() override
Definition: wait_strategy.h:106
Definition: wait_strategy.h:90
bool EmptyWait() override
Definition: wait_strategy.h:43
virtual void BreakAllWait()
Definition: wait_strategy.h:33
bool EmptyWait() override
Definition: wait_strategy.h:87
YieldWaitStrategy()
Definition: wait_strategy.h:77
virtual void NotifyOne()
Definition: wait_strategy.h:32
void NotifyOne() override
Definition: wait_strategy.h:96
Definition: wait_strategy.h:56
bool EmptyWait() override
Definition: wait_strategy.h:62
void SetSleepTimeMicroSeconds(uint64_t sleep_time_us)
Definition: wait_strategy.h:67
BusySpinWaitStrategy()
Definition: wait_strategy.h:86
SleepWaitStrategy(uint64_t sleep_time_us)
Definition: wait_strategy.h:59
bool EmptyWait() override
Definition: wait_strategy.h:98
SleepWaitStrategy()
Definition: wait_strategy.h:58
TimeoutBlockWaitStrategy()
Definition: wait_strategy.h:92
void BreakAllWait() override
Definition: wait_strategy.h:49
bool EmptyWait() override
Definition: wait_strategy.h:78
void NotifyOne() override
Definition: wait_strategy.h:41
virtual ~WaitStrategy()
Definition: wait_strategy.h:35
Definition: wait_strategy.h:84
Definition: wait_strategy.h:38