X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Fos_thread.hpp;h=c01d228910e675f35cc1b56e8d7471c0cd2cdc2f;hb=b032a6f55c364f23206cd619d33bb1cf9867657d;hp=6c0b488c0152474a031a82839b0c767777714fdd;hpb=39a9f3650233206061134772417bfada16cd07be;p=apitrace diff --git a/common/os_thread.hpp b/common/os_thread.hpp index 6c0b488..c01d228 100644 --- a/common/os_thread.hpp +++ b/common/os_thread.hpp @@ -341,6 +341,18 @@ private: typedef pthread_t native_handle_type; #endif + inline + thread() : + _native_handle(0) + { + } + + inline + thread(thread &other) : + _native_handle(other._native_handle) + { + } + template< class Function, class Arg > explicit thread( Function& f, Arg arg ) { #ifdef _WIN32 @@ -348,10 +360,15 @@ private: DWORD id = 0; _native_handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)f, (LPVOID)arg, 0, &id); #else - pthread_create(&_native_handle, NULL, f, arg); + pthread_create(&_native_handle, NULL, ( void *(*) (void *))f, arg); #endif } + inline bool + joinable(void) const { + return _native_handle != 0; + } + inline void join() { #ifdef _WIN32