X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Fos_thread.hpp;h=f3ae210053da2b08ef711f516a92a3be433860b1;hb=dfd413a5f54bd450850b5e84886949bcdf85b1e7;hp=da6e106487e5e7c4505a2ae3efb05cc88e36af71;hpb=fbc23dc3c4699b1bbf17cc3c987e4c85857a3614;p=apitrace diff --git a/common/os_thread.hpp b/common/os_thread.hpp index da6e106..f3ae210 100644 --- a/common/os_thread.hpp +++ b/common/os_thread.hpp @@ -40,6 +40,9 @@ #endif +/* + * This feature is not supported on Windows XP + */ #define USE_WIN32_CONDITION_VARIABLES 0 @@ -50,13 +53,10 @@ * - http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Thread_002dLocal.html * - http://msdn.microsoft.com/en-us/library/9w1sdazb.aspx */ -#if defined(_MSC_VER) -# define thread_specific __declspec(thread) -#elif defined(__GNUC__) -# define thread_specific __thread +#if defined(HAVE_COMPILER_TLS) +# define OS_THREAD_SPECIFIC_PTR(_type) HAVE_COMPILER_TLS _type * #else -# define thread_specific -# error "Unsupported compiler" +# define OS_THREAD_SPECIFIC_PTR(_type) os::thread_specific_ptr< _type > #endif @@ -374,6 +374,10 @@ namespace os { { } + inline + ~thread() { + } + template< class Function, class Arg > explicit thread( Function& f, Arg arg ) { #ifdef _WIN32 @@ -384,6 +388,12 @@ namespace os { #endif } + inline thread & + operator =(const thread &other) { + _native_handle = other._native_handle; + return *this; + } + inline bool joinable(void) const { return _native_handle != 0;