diff options
Diffstat (limited to '')
-rw-r--r-- | src/common/thread.cpp | 82 |
1 files changed, 32 insertions, 50 deletions
diff --git a/src/common/thread.cpp b/src/common/thread.cpp index 7bbf080bc..6e7b39b9a 100644 --- a/src/common/thread.cpp +++ b/src/common/thread.cpp @@ -3,29 +3,25 @@ // Refer to the license.txt file included. #include "common/thread.h" - #ifdef __APPLE__ - #include <mach/mach.h> +#include <mach/mach.h> #elif defined(_WIN32) - #include <Windows.h> +#include <Windows.h> +#else +#if defined(BSD4_4) || defined(__OpenBSD__) +#include <pthread_np.h> #else - #if defined(BSD4_4) || defined(__OpenBSD__) - #include <pthread_np.h> - #else - #include <pthread.h> - #endif - #include <sched.h> +#include <pthread.h> +#endif +#include <sched.h> #endif - #ifndef _WIN32 - #include <unistd.h> +#include <unistd.h> #endif -namespace Common -{ +namespace Common { -int CurrentThreadId() -{ +int CurrentThreadId() { #ifdef _MSC_VER return GetCurrentThreadId(); #elif defined __APPLE__ @@ -37,26 +33,22 @@ int CurrentThreadId() #ifdef _WIN32 // Supporting functions -void SleepCurrentThread(int ms) -{ +void SleepCurrentThread(int ms) { Sleep(ms); } #endif #ifdef _MSC_VER -void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) -{ +void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) { SetThreadAffinityMask(thread, mask); } -void SetCurrentThreadAffinity(u32 mask) -{ +void SetCurrentThreadAffinity(u32 mask) { SetThreadAffinityMask(GetCurrentThread(), mask); } -void SwitchCurrentThread() -{ +void SwitchCurrentThread() { SwitchToThread(); } @@ -66,40 +58,34 @@ void SwitchCurrentThread() // This is implemented much nicer in upcoming msvc++, see: // http://msdn.microsoft.com/en-us/library/xcb2z8hs(VS.100).aspx -void SetCurrentThreadName(const char* szThreadName) -{ +void SetCurrentThreadName(const char* szThreadName) { static const DWORD MS_VC_EXCEPTION = 0x406D1388; - #pragma pack(push,8) - struct THREADNAME_INFO - { - DWORD dwType; // must be 0x1000 - LPCSTR szName; // pointer to name (in user addr space) +#pragma pack(push, 8) + struct THREADNAME_INFO { + DWORD dwType; // must be 0x1000 + LPCSTR szName; // pointer to name (in user addr space) DWORD dwThreadID; // thread ID (-1=caller thread) - DWORD dwFlags; // reserved for future use, must be zero + DWORD dwFlags; // reserved for future use, must be zero } info; - #pragma pack(pop) +#pragma pack(pop) info.dwType = 0x1000; info.szName = szThreadName; - info.dwThreadID = -1; //dwThreadID; + info.dwThreadID = -1; // dwThreadID; info.dwFlags = 0; - __try - { - RaiseException(MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info); + __try { + RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(ULONG_PTR), (ULONG_PTR*)&info); + } __except (EXCEPTION_CONTINUE_EXECUTION) { } - __except(EXCEPTION_CONTINUE_EXECUTION) - {} } #else // !MSVC_VER, so must be POSIX threads -void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) -{ +void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) { #ifdef __APPLE__ - thread_policy_set(pthread_mach_thread_np(thread), - THREAD_AFFINITY_POLICY, (integer_t *)&mask, 1); + thread_policy_set(pthread_mach_thread_np(thread), THREAD_AFFINITY_POLICY, (integer_t*)&mask, 1); #elif (defined __linux__ || defined BSD4_4) && !(defined ANDROID) cpu_set_t cpu_set; CPU_ZERO(&cpu_set); @@ -112,27 +98,23 @@ void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) #endif } -void SetCurrentThreadAffinity(u32 mask) -{ +void SetCurrentThreadAffinity(u32 mask) { SetThreadAffinity(pthread_self(), mask); } #ifndef _WIN32 -void SleepCurrentThread(int ms) -{ +void SleepCurrentThread(int ms) { usleep(1000 * ms); } -void SwitchCurrentThread() -{ +void SwitchCurrentThread() { usleep(1000 * 1); } #endif // MinGW with the POSIX threading model does not support pthread_setname_np #if !defined(_WIN32) || defined(_MSC_VER) -void SetCurrentThreadName(const char* szThreadName) -{ +void SetCurrentThreadName(const char* szThreadName) { #ifdef __APPLE__ pthread_setname_np(szThreadName); #elif defined(__OpenBSD__) |