Go to the documentation of this file. 36 #define CTHR_RWLOCK_TYPE SRWLOCK 37 #define CTHR_RWLOCK_INIT SRWLOCK_INIT 38 #define CTHR_RWLOCK_LOCK_WRITE(x) AcquireSRWLockExclusive(&x) 39 #define CTHR_RWLOCK_UNLOCK_WRITE(x) ReleaseSRWLockExclusive(&x) 40 #define CTHR_RWLOCK_LOCK_READ(x) AcquireSRWLockShared(&x) 41 #define CTHR_RWLOCK_UNLOCK_READ(x) ReleaseSRWLockShared(&x) 42 #define CTHR_RWLOCK_TRYLOCK_READ(x) TryAcquireSRWLockShared(&x) 44 #define CTHR_THREAD_TYPE HANDLE 45 #define CTHR_THREAD_RTYPE unsigned __stdcall 46 #define CTHR_THREAD_RETURN _endthreadex(0); return 0; 47 #define CTHR_THREAD_CREATE(thr, func, arg) ((thr = (HANDLE)_beginthreadex(0, 0, func, arg, 0, 0)) != 0L) 48 #define CTHR_THREAD_JOIN(thr) do { WaitForSingleObject(thr, INFINITE); CloseHandle(thr); } while(0) 49 #define CTHR_THREAD_CLOSE(thr) CloseHandle((HANDLE)thr); 55 #define CTHR_RWLOCK_TYPE pthread_rwlock_t 56 #define CTHR_RWLOCK_INIT PTHREAD_RWLOCK_INITIALIZER 57 #define CTHR_RWLOCK_LOCK_WRITE(x) pthread_rwlock_wrlock(&x) 58 #define CTHR_RWLOCK_UNLOCK_WRITE(x) pthread_rwlock_unlock(&x) 59 #define CTHR_RWLOCK_LOCK_READ(x) pthread_rwlock_rdlock(&x) 60 #define CTHR_RWLOCK_UNLOCK_READ(x) pthread_rwlock_unlock(&x) 61 #define CTHR_RWLOCK_TRYLOCK_READ(x) (pthread_rwlock_tryrdlock(&x) == 0) 63 #define CTHR_THREAD_TYPE pthread_t 64 #define CTHR_THREAD_RTYPE void * 65 #define CTHR_THREAD_RETURN return NULL 66 #define CTHR_THREAD_CREATE(thr, func, arg) (pthread_create(&thr, NULL, func, arg) == 0) 67 #define CTHR_THREAD_JOIN(thr) pthread_join(thr, NULL) 68 #define CTHR_THREAD_CLOSE(thr)