int w32_thread_create( w32_thread_t* thread_handle, security_attr_t* attr, unsigned (__stdcall *start_routine)(void*), void* arg ) { if ( !start_routine || !thread_handle ) return -1; /* * 常識的に考えた結果、_beginthreadex 関数を使うハメになる。 */ *thread_handle = __REINTERPRET_CAST(w32_thread_t, _beginthreadex( attr, 0, start_routine, arg, 0, NULL ) ); return *thread_handle != 0? 0: -1; }
w32_thread_t w32_get_current_thread() { return __REINTERPRET_CAST( w32_thread_t, GetCurrentThread() ); }
size_t operator()(const void* p) const { return __REINTERPRET_CAST(size_t,p); }