1#ifndef THR_COND_INCLUDED
2#define THR_COND_INCLUDED
60static DWORD get_milliseconds(
const struct timespec *abstime) {
65 const ulonglong future = abstime->tv_sec * 1000 + abstime->tv_nsec / 1000000;
68 if (future < now)
return 0;
69 return (DWORD)(future - now);
75 InitializeConditionVariable(cond);
79 return pthread_cond_init(cond,
nullptr);
87 return pthread_cond_destroy(cond);
93 const struct timespec *abstime) {
95 const DWORD
timeout = get_milliseconds(abstime);
99 return pthread_cond_timedwait(cond, mutex, abstime);
105 if (!SleepConditionVariableCS(cond, mutex, INFINITE))
return ETIMEDOUT;
108 return pthread_cond_wait(cond, mutex);
114 WakeConditionVariable(cond);
117 return pthread_cond_signal(cond);
123 WakeAllConditionVariable(cond);
126 return pthread_cond_broadcast(cond);
133int safe_cond_timedwait(
native_cond_t *cond, safe_mutex_t *mp,
134 const struct timespec *abstime,
const char *
file,
139 const struct timespec *abstime
142 const char *
file, uint line
155 const char *
file, uint line
159 return safe_cond_wait(cond, mp->m_u.m_safe_ptr,
file, line);
unsigned long long int ulonglong
Definition: my_inttypes.h:55
Defines for getting and processing the current system type programmatically.
unsigned long long int my_getsystime()
Get high-resolution time.
Definition: my_systime.h:101
Defines to make different thread packages compatible.
#define ETIMEDOUT
Definition: my_thread.h:47
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:497
Definition: thr_mutex_bits.h:60
static int native_cond_init(native_cond_t *cond)
Definition: thr_cond.h:73
static int native_cond_wait(native_cond_t *cond, native_mutex_t *mutex)
Definition: thr_cond.h:103
static int native_cond_broadcast(native_cond_t *cond)
Definition: thr_cond.h:121
static int my_cond_timedwait(native_cond_t *cond, my_mutex_t *mp, const struct timespec *abstime)
Definition: thr_cond.h:138
static int my_cond_wait(native_cond_t *cond, my_mutex_t *mp)
Definition: thr_cond.h:152
static int native_cond_destroy(native_cond_t *cond)
Definition: thr_cond.h:83
static int native_cond_signal(native_cond_t *cond)
Definition: thr_cond.h:112
static int native_cond_timedwait(native_cond_t *cond, native_mutex_t *mutex, const struct timespec *abstime)
Definition: thr_cond.h:91
MySQL condition variable implementation.
pthread_cond_t native_cond_t
Definition: thr_cond_bits.h:45
MySQL mutex implementation.
pthread_mutex_t native_mutex_t
Definition: thr_mutex_bits.h:54
Include file for Sun RPC to compile out of the box.
native_mutex_t m_native
Definition: thr_mutex_bits.h:62
safe_mutex_t * m_safe_ptr
Definition: thr_mutex_bits.h:63