TLS — Tread Local Storage — механизм Win32, позволяющий каждому потоку иметь свои глобальные данные. Функции SetTLSValue/GetTLSValue позволяют устанавливать значения, у каждого потока получается своя ячейка памяти. Реализовано это, грубо говоря, как map по ID потока, только, по идее, работает немного быстрее.
Есть что-то подобное для pthreads или нужно писать самому?