#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相关宏定义