Boost logo

Threads-Devel :

Subject: [Threads-devel] BOOST_THREAD_LOCAL for non-C++11 compilers
From: Fredrik Orderud (forderud_at_[hidden])
Date: 2013-02-16 05:43:58

C++11 have introduced a new "thread_local" keyword for per-thread data
storage. My impression is that compiler support for the keyword is not yet
widely available. However, most compilers have already supported
non-standard variants of the keyword for the past decade. GCC has e.g.
supported "__thread" since GCC 3.3.1 (2003), and MSVC has supported
"__declspec(thread)" since 2003.

It would be great if Boost could introduce some form of
"BOOST_THREAD_LOCAL" macro for portable "thread_local" support also for
non-C++11 compilers. From the boost::thread documentation, I can see that
there already is a thread_specific_ptr class available, but that seems more
like a per-thread smart-pointer than a general mechanism for thread-local

Any comments?

Example draft implementation:
# if __cplusplus >= 201103L
# define BOOST_THREAD_LOCAL thread_local
# elif defined _MSC_VER
# define BOOST_THREAD_LOCAL __declspec(thread)
# else
# define BOOST_THREAD_LOCAL __thread
# endif


Threads-Devel list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at