> Visual C++ supports __declspec(thread).
>
> pthread TLS is orders of magnitudes slower than __thread. __thread in an
> executable is just as fast as a non-TLS variable access, 2 or 3 machine
> language instructions at most.
>
> Some pthread_getspecific implementation do a_linear walk_ of the keys. In
> that case it may work to have something like Windows plus a single
> pthread_getspecific key. On the other hand, Windows provides very good
> support for that thanks to its ordered subsections (.tls$something). It
> only needs a bit of preprocessor magic. Thinks such as linker scripts would
> be way out of scope.
According to this blog, also pthread_getspecific on OSX can amount to
three instructions except on PPC:
http://lifecs.likai.org/2010/05/mac-os-x-thread-local-storage.html