28template <
class Predicate>
36template <
class Rep,
class Period,
class Predicate>
38 std::unique_lock<Mutex_wrapper> &
lock,
39 const std::chrono::duration<Rep, Period> &rel_time,
Predicate pred) {
41 auto end_time = std::chrono::system_clock::now() + rel_time;
42 tm.tv_sec = std::chrono::system_clock::to_time_t(end_time);
43 auto ns = std::chrono::duration_cast<std::chrono::nanoseconds>(
44 end_time.time_since_epoch())
48 bool last_pred_value{
false};
50 while (!(last_pred_value = pred()) && !
timeout) {
53 return last_pred_value;
56template <
class Rep,
class Period>
58 std::unique_lock<Mutex_wrapper> &
lock,
59 const std::chrono::duration<Rep, Period> &rel_time) {
61 auto end_time = std::chrono::system_clock::now() + rel_time;
62 tm.tv_sec = std::chrono::system_clock::to_time_t(end_time);
63 auto ns = std::chrono::duration_cast<std::chrono::nanoseconds>(
64 end_time.time_since_epoch())
70 : std::cv_status::no_timeout;
73template <
class Clock,
class Duration,
class Predicate>
75 std::unique_lock<Mutex_wrapper> &
lock,
76 const std::chrono::time_point<Clock, Duration> &abs_time,
Predicate pred) {
78 tm.tv_sec = Clock::to_time_t(abs_time);
79 auto ns = std::chrono::duration_cast<std::chrono::nanoseconds>(
80 abs_time.time_since_epoch())
85 bool last_pred_value =
false;
86 while (!(last_pred_value = pred()) && !
timeout) {
89 return last_pred_value;
92template <
class Clock,
class Duration>
94 std::unique_lock<Mutex_wrapper> &
lock,
95 const std::chrono::time_point<Clock, Duration> &abs_time) {
97 tm.tv_sec = Clock::to_time_t(abs_time);
98 auto ns = std::chrono::duration_cast<std::chrono::nanoseconds>(
99 abs_time.time_since_epoch())
105 : std::cv_status::no_timeout;
bool wait_until(std::unique_lock< Mutex_wrapper > &lock, const std::chrono::time_point< Clock, Duration > &abs_time, Predicate pred)
Wait until an absolute timeout or until notified.
Definition: condition_variable_wrapper_impl.hpp:74
mysql_cond_t m_cv
Definition: condition_variable_wrapper.h:115
void wait(std::unique_lock< Mutex_wrapper > &lock, Predicate pred)
Wait until notified or predicate is false.
Definition: condition_variable_wrapper_impl.hpp:29
bool wait_for(std::unique_lock< Mutex_wrapper > &lock, const std::chrono::duration< Rep, Period > &rel_time, Predicate pred)
Wait for a relative timeout or until notified.
Definition: condition_variable_wrapper_impl.hpp:37
#define mysql_cond_wait(C, M)
Definition: mysql_cond.h:48
#define mysql_cond_timedwait(C, M, T)
Definition: mysql_cond.h:51
Provides atomic access in shared-exclusive modes.
Definition: shared_spin_lock.h:79
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:499
Definition: cache_line_size.h:31
A filter of some sort that is not a join condition (those are stored in JoinPredicate objects).
Definition: access_path.h:138