From 1fb1fa2e0a491bf415955bd42fb43fce24923ba8 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Mon, 26 Nov 2018 23:26:08 +0100 Subject: [PATCH] Add M_THREAD_ATTR --- m-mutex.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/m-mutex.h b/m-mutex.h index 12122fd4..723b2162 100644 --- a/m-mutex.h +++ b/m-mutex.h @@ -120,6 +120,7 @@ static inline void m_oncei_call(m_oncei_t o, void (*func)(void)) call_once(o,func); } +#define M_THREAD_ATTR _Thread_local // MSYS2 doesn't define _WIN32 by default. @@ -237,6 +238,12 @@ static inline void m_oncei_call(m_oncei_t o, void (*func)(void)) InitOnceExecuteOnce(o, m_oncei_callback, (void*)(intptr_t)func, NULL); } +#if defined(_MSC_VER) +# define M_THREAD_ATTR __declspec( thread ) +#else +# define M_THREAD_ATTR __thread +#endif + #else /**************************** PTHREAD version ******************************/ @@ -348,6 +355,8 @@ static inline void m_oncei_call(m_oncei_t o, void (*func)(void)) pthread_once(o,func); } +#define M_THREAD_ATTR __thread + #endif // TODO: m_thread_sleep doesn't yield thread during waiting, making it a poor choice for active waiting.