標籤:
#ifdef _WIN32#include <windows.h>extern "C" { extern int getopt(int, char * const *, const char *); extern char *optarg;}#define PATHD ‘\\‘typedef HANDLE thread_t;#define thread_create(thrp, attr, func, arg) (((*(thrp) = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)(func), (arg), 0, NULL)) == NULL) ? -1 : 0)#define thread_join(thr, statusp) ((WaitForSingleObject((thr), INFINITE) == WAIT_OBJECT_0) && ((statusp == NULL) ? 0 : (GetExitCodeThread((thr), (LPDWORD)(statusp)) ? 0 : -1)))typedef HANDLE mutex_t;#define mutex_init(m, attr) (((*(m) = CreateMutex(NULL, FALSE, NULL)) != NULL) ? 0 : -1)#define mutex_lock(m) ((WaitForSingleObject(*(m), INFINITE) == WAIT_OBJECT_0) ? 0 : -1)#define mutex_unlock(m) (ReleaseMutex(*(m)) ? 0 : -1)#else#include <pthread.h>#include <unistd.h>#define PATHD ‘/‘typedef pthread_t thread_t;#define thread_create(thrp, attr, func, arg) pthread_create((thrp), (attr), (func), (arg))#define thread_join(thr, statusp) pthread_join((thr), (statusp))typedef pthread_mutex_t mutex_t;#define mutex_init(m, attr) pthread_mutex_init((m), (attr))#define mutex_lock(m) pthread_mutex_lock(m)#define mutex_unlock(m) pthread_mutex_unlock(m)#endif
windows 下使用thread_create相關宏定義