diff options
author | James Almer <jamrial@gmail.com> | 2018-09-30 00:09:07 +0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2018-09-30 00:14:52 +0300 |
commit | ac7367d8f1accb013a65ffaa52bcd1fc8ba15126 (patch) | |
tree | 9f83f2089caadb06ea08297ee124bd9b7310b00c /src/thread.h | |
parent | 755fcdf884aae9ee85ef611d24398a39da53f407 (diff) |
threads: Inline some Windows pthreads compat wrappers in the header
They are all single line functions.
Diffstat (limited to 'src/thread.h')
-rw-r--r-- | src/thread.h | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/src/thread.h b/src/thread.h index 93b7347..cfdf4a0 100644 --- a/src/thread.h +++ b/src/thread.h @@ -42,23 +42,52 @@ typedef void *pthread_mutexattr_t; typedef void *pthread_condattr_t; typedef void *pthread_attr_t; -void pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t* attr); -void pthread_mutex_destroy(pthread_mutex_t* mutex); -void pthread_mutex_lock(pthread_mutex_t* mutex); -void pthread_mutex_unlock(pthread_mutex_t* mutex); - -void pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t* attr); -void pthread_cond_destroy(pthread_cond_t* cond); -void pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex); -void pthread_cond_signal(pthread_cond_t* cond); -void pthread_cond_broadcast(pthread_cond_t* cond); - int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void*(*proc)(void*), void* param); void pthread_join(pthread_t thread, void** res); int pthread_once(pthread_once_t *once_control, void (*init_routine)(void)); +static inline void pthread_mutex_init(pthread_mutex_t* mutex, + const pthread_mutexattr_t* attr) +{ + (void)attr; + InitializeCriticalSection(mutex); +} + +static inline void pthread_mutex_destroy(pthread_mutex_t* mutex) { + DeleteCriticalSection(mutex); +} + +static inline void pthread_mutex_lock(pthread_mutex_t* mutex) { + EnterCriticalSection(mutex); +} + +static inline void pthread_mutex_unlock(pthread_mutex_t* mutex) { + LeaveCriticalSection(mutex); +} + +static inline void pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t* attr) { + (void)attr; + InitializeConditionVariable(cond); +} + +static inline void pthread_cond_destroy(pthread_cond_t* cond) { + (void)cond; +} + +static inline void pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex) { + SleepConditionVariableCS(cond, mutex, INFINITE); +} + +static inline void pthread_cond_signal(pthread_cond_t* cond) { + WakeConditionVariable(cond); +} + +static inline void pthread_cond_broadcast(pthread_cond_t* cond) { + WakeAllConditionVariable(cond); +} + #else #include <pthread.h> |