5 typedef HANDLE thread_t;
6 typedef CRITICAL_SECTION mutex_t;
8 static inline bool thread_create(thread_t *tid, void (*func)(void *), void *arg) {
9 *tid = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)func, arg, 0, NULL);
12 static inline void thread_destroy(thread_t *tid) {
13 WaitForSingleObject(tid, 0);
16 static inline void mutex_create(mutex_t *mutex) {
17 InitializeCriticalSection(mutex);
19 static inline void mutex_lock(mutex_t *mutex) {
20 EnterCriticalSection(mutex);
22 static inline void mutex_unlock(mutex_t *mutex) {
23 LeaveCriticalSection(mutex);
28 typedef pthread_t thread_t;
29 typedef pthread_mutex_t mutex_t;
31 static inline bool thread_create(thread_t *tid, void (*func)(void *), void *arg) {
32 return !pthread_create(tid, NULL, (void *(*)(void *))func, arg);
34 static inline void thread_destroy(thread_t *tid) {
36 pthread_join(*tid, NULL);
38 static inline void mutex_create(mutex_t *mutex) {
39 pthread_mutex_init(mutex, NULL);
41 static inline void mutex_lock(mutex_t *mutex) {
42 pthread_mutex_lock(mutex);
44 static inline void mutex_unlock(mutex_t *mutex) {
45 pthread_mutex_unlock(mutex);