Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2018-09-30 00:09:07 +0300
committerJames Almer <jamrial@gmail.com>2018-09-30 00:14:52 +0300
commitac7367d8f1accb013a65ffaa52bcd1fc8ba15126 (patch)
tree9f83f2089caadb06ea08297ee124bd9b7310b00c /src/thread.h
parent755fcdf884aae9ee85ef611d24398a39da53f407 (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.h51
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>