1#ifndef THR_COND_INCLUDED
2#define THR_COND_INCLUDED
59static DWORD get_milliseconds(
const struct timespec *abstime) {
64 const ulonglong future = abstime->tv_sec * 1000 + abstime->tv_nsec / 1000000;
67 if (future < now)
return 0;
68 return (DWORD)(future - now);
74 InitializeConditionVariable(cond);
78 return pthread_cond_init(cond,
nullptr);
86 return pthread_cond_destroy(cond);
92 const struct timespec *abstime) {
94 const DWORD
timeout = get_milliseconds(abstime);
98 return pthread_cond_timedwait(cond, mutex, abstime);
104 if (!SleepConditionVariableCS(cond, mutex, INFINITE))
return ETIMEDOUT;
107 return pthread_cond_wait(cond, mutex);
113 WakeConditionVariable(cond);
116 return pthread_cond_signal(cond);
122 WakeAllConditionVariable(cond);
125 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);
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
Defines for getting and processing the current system type programmatically.
unsigned long long int my_getsystime()
Get high-resolution time.
Definition: my_systime.h:104
#define ETIMEDOUT
Definition: my_thread.h:48
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:498
Definition: thr_mutex_bits.h:61
static int native_cond_init(native_cond_t *cond)
Definition: thr_cond.h:72
static int native_cond_wait(native_cond_t *cond, native_mutex_t *mutex)
Definition: thr_cond.h:102
static int native_cond_broadcast(native_cond_t *cond)
Definition: thr_cond.h:120
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:82
static int native_cond_signal(native_cond_t *cond)
Definition: thr_cond.h:111
static int native_cond_timedwait(native_cond_t *cond, native_mutex_t *mutex, const struct timespec *abstime)
Definition: thr_cond.h:90
MySQL condition variable implementation.
pthread_cond_t native_cond_t
Definition: thr_cond_bits.h:46
pthread_mutex_t native_mutex_t
Definition: thr_mutex_bits.h:55
Include file for Sun RPC to compile out of the box.
native_mutex_t m_native
Definition: thr_mutex_bits.h:63
safe_mutex_t * m_safe_ptr
Definition: thr_mutex_bits.h:64