add pthread_self/pthread_equal for win32
This commit is contained in:
parent
1b84f79f4c
commit
0e46c1e8ba
@ -18,17 +18,18 @@
|
||||
struct pthread_once {
|
||||
INIT_ONCE once;
|
||||
};
|
||||
|
||||
typedef struct pthread_once pthread_once_t;
|
||||
|
||||
static BOOL CALLBACK _pthread_once_win32_cb(PINIT_ONCE once, PVOID param, PVOID *context)
|
||||
static inline BOOL CALLBACK
|
||||
_pthread_once_win32_cb(PINIT_ONCE once, PVOID param, PVOID *context)
|
||||
{
|
||||
void (*cb) (void) = param;
|
||||
cb();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int pthread_once(pthread_once_t *once, void (*cb) (void))
|
||||
static inline int
|
||||
pthread_once(pthread_once_t *once, void (*cb) (void))
|
||||
{
|
||||
BOOL rc = InitOnceExecuteOnce(&once->once, _pthread_once_win32_cb, cb, NULL);
|
||||
if (rc == 0)
|
||||
@ -37,6 +38,25 @@ static int pthread_once(pthread_once_t *once, void (*cb) (void))
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct pthread {
|
||||
HANDLE handle;
|
||||
};
|
||||
typedef struct pthread pthread_t;
|
||||
|
||||
static inline pthread_t
|
||||
pthread_self(void)
|
||||
{
|
||||
pthread_t self;
|
||||
self.handle = GetCurrentThread();
|
||||
return self;
|
||||
}
|
||||
|
||||
static inline int
|
||||
pthread_equal(pthread_t t1, pthread_t t2)
|
||||
{
|
||||
return t1.handle == t2.handle;
|
||||
}
|
||||
|
||||
#else
|
||||
#include_next <pthread.h>
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user