首页 > 代码库 > windows 下使用thread_create相关宏定义

windows 下使用thread_create相关宏定义

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