23 #ifndef _THREAD_WAITER_HPP_ 24 #define _THREAD_WAITER_HPP_ 30 #include <condition_variable> 88 inline void awake (
void);
118 : m_duration (duration)
130 void set_infinite_wait ();
131 void set_duration (
const D &
duration);
135 template <
typename D>
136 void condvar_wait (std::condition_variable &condvar, std::unique_lock<std::mutex> &lock,
138 template <
typename D,
typename P>
139 bool condvar_wait (std::condition_variable &condvar, std::unique_lock<std::mutex> &lock,
146 template <
typename D>
148 condvar_wait (std::condition_variable &condvar, std::unique_lock<std::mutex> &lock,
157 (void) condvar.wait_for (lock, duration.
m_duration);
161 template <
typename D,
typename P>
163 condvar_wait (std::condition_variable &condvar, std::unique_lock<std::mutex> &lock,
168 condvar.wait (lock, pred);
173 return condvar.wait_for (lock, duration.
m_duration, pred);
194 #endif // _THREAD_WAITER_HPP_
cubperf::statset & m_stats
generic_value< false > stat_value
wait_duration(const D &duration)
cubperf::atomic_stat_counter m_wakeup_calls
clock::time_point time_point
void condvar_wait(std::condition_variable &condvar, std::unique_lock< std::mutex > &lock, const wait_duration< D > &duration)
void get_stats(cubperf::stat_value *stats_out)
void set_duration(const D &duration)
static std::size_t get_stats_value_count(void)
bool wait_for(const std::chrono::system_clock::duration &delta)
static const char * get_stat_name(std::size_t stat_index)
std::condition_variable m_condvar
bool wait_until(const std::chrono::system_clock::time_point &timeout_time)