diff options
author | sanine <sanine.not@pm.me> | 2022-08-26 12:42:30 -0500 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2022-08-26 12:42:30 -0500 |
commit | bde3e4f1bb7b8f8abca0884a7d994ee1c17a66b1 (patch) | |
tree | 825ff3669a38ec247bcc9b575a4a4ceb81534d35 /src/mutex.c | |
parent | 8ec3f8e82acd70410515550fd1790ee5827aafdb (diff) |
refactor: move mossrose.h to include/ dir
Diffstat (limited to 'src/mutex.c')
-rw-r--r-- | src/mutex.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/mutex.c b/src/mutex.c new file mode 100644 index 0000000..4a51fa8 --- /dev/null +++ b/src/mutex.c @@ -0,0 +1,58 @@ +#include "mutex.h" + +#ifdef WIN32 +#include <windows.h> +void mossrose_mutex_init(mossrose_mutex_t *mutex) +{ + *mutex = CreateMutex(NULL, false, NULL); +} + +void mossrose_mutex_lock(mossrose_mutex_t *mutex) +{ + WaitForSingleObject(*mutex, INFINITE); +} + +int mossrose_mutex_trylock(mossrose_mutex_t *mutex) +{ + int result = WaitForSingleObject(*mutex, 0); + return result != WAIT_OBJECT_0; +} + +void mossrose_mutex_unlock(mossrose_mutex_t *mutex) +{ + ReleaseMutex(*mutex); +} + +void mossrose_mutex_destroy(mossrose_mutex_t *mutex) +{ + ReleaseMutex(*mutex); +} + + +#else +#include <pthread.h> +void mossrose_mutex_init(mossrose_mutex_t *mutex) +{ + pthread_mutex_init(mutex, NULL); +} + +void mossrose_mutex_lock(mossrose_mutex_t *mutex) +{ + pthread_mutex_lock(mutex); +} + +int mossrose_mutex_trylock(mossrose_mutex_t *mutex) +{ + return pthread_mutex_trylock(mutex); +} + +void mossrose_mutex_unlock(mossrose_mutex_t *mutex) +{ + pthread_mutex_unlock(mutex); +} + +void mossrose_mutex_destroy(mossrose_mutex_t *mutex) +{ + pthread_mutex_destroy(mutex); +} +#endif |