Go to the documentation of this file.
34 #define CTHR_MUTEX_TYPE HANDLE
35 #define CTHR_MUTEX_INIT NULL
36 #define CTHR_MUTEX_LOCK(x) do { if (x == NULL) { \
37 HANDLE p = CreateMutex(NULL, FALSE, NULL); \
38 if (InterlockedCompareExchangePointer((PVOID*)&x, (PVOID)p, NULL) != NULL) \
40 } WaitForSingleObject(x, INFINITE); } while(0)
41 #define CTHR_MUTEX_UNLOCK(x) ReleaseMutex(x)
42 #define CTHR_THREAD_TYPE HANDLE
43 #define CTHR_THREAD_RTYPE void
44 #define CTHR_THREAD_RETURN return
45 #define CTHR_THREAD_CREATE(thr, func, arg) thr = (HANDLE)_beginthread(func, 0, arg)
46 #define CTHR_THREAD_JOIN(thr) WaitForSingleObject(thr, INFINITE)
49 #define CTHR_MUTEX_TYPE pthread_mutex_t
50 #define CTHR_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
51 #define CTHR_MUTEX_LOCK(x) pthread_mutex_lock(&x)
52 #define CTHR_MUTEX_UNLOCK(x) pthread_mutex_unlock(&x)
53 #define CTHR_THREAD_TYPE pthread_t
54 #define CTHR_THREAD_RTYPE void *
55 #define CTHR_THREAD_RETURN return NULL
56 #define CTHR_THREAD_CREATE(thr, func, arg) pthread_create(&thr, NULL, func, arg)
57 #define CTHR_THREAD_JOIN(thr) pthread_join(thr, NULL)