aboutsummaryrefslogtreecommitdiff
path: root/src/common.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.cpp')
-rw-r--r--src/common.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/common.cpp b/src/common.cpp
index 81afe2bef..d02fd9371 100644
--- a/src/common.cpp
+++ b/src/common.cpp
@@ -48,21 +48,25 @@
ReleaseSRWLockExclusive(&m->srwlock);
}
#else
- typedef gbMutex BlockingMutex;
+ struct BlockingMutex {
+ pthread_mutex_t pthread_mutex;
+ pthread_mutexattr_t pthread_mutexattr;
+ };
void mutex_init(BlockingMutex *m) {
- gb_mutex_init(m);
+ pthread_mutexattr_init(&m->pthread_mutexattr);
+ pthread_mutex_init(&m->pthread_mutex, &m->pthread_mutexattr);
}
void mutex_destroy(BlockingMutex *m) {
- gb_mutex_destroy(m);
+ pthread_mutex_destroy(&m->pthread_mutex);
}
void mutex_lock(BlockingMutex *m) {
- gb_mutex_lock(m);
+ pthread_mutex_lock(&m->pthread_mutex);
}
bool mutex_try_lock(BlockingMutex *m) {
- return !!gb_mutex_try_lock(m);
+ return pthread_mutex_trylock(&m->pthread_mutex) == 0;
}
void mutex_unlock(BlockingMutex *m) {
- gb_mutex_unlock(m);
+ pthread_mutex_unlock(&m->pthread_mutex);
}
#endif