opis jak to działa na Linuksie przez Uli Drepper (opiekuna glibc) można znaleźć tutaj: www.akkadia.org/drepper/tls.pdf
Wymóg obsłużyć dynamicznie ładowane moduły itp uczynić cały mechanizm trochę zawiłe, co może częściowo wyjaśnia, dlaczego dokument waży 79 stron (!).
Zależnie od użycia pamięci każda zmienna wątku oczywiście potrzebuje własnej pamięci na wątek (chociaż w niektórych przypadkach można to zrobić leniwie w taki sposób, że miejsce jest przydzielane tylko po pierwszym uzyskaniu dostępu do zmiennej), a następnie istnieje kilka dodatkowych struktur danych, które są potrzebne w tabelach offsetowych itp.
Pod względem wydajności dodatkowy koszt dostępu do zmiennej TLS dotyczy głównie pobierania adresu zmiennej. W systemie x86 Linux rejestr GS jest używany jako początek do uzyskania identyfikatora wątku na serwerze x86-64 FS. Zwykle istnieje kilka dereferencji wskaźnika i wywołanie funkcji (__tls_get_addr) dla dynamicznie ładowanego kodu. Istnieje również koszt, że tworzenie nowego wątku jest wolniejsze, ponieważ implementacja musi alokować przestrzeń i ewentualnie inicjować wszystkie zmienne TLS (jeśli nie są wykonywane leniwie).
TLS jest łatwy do robienia niektórych starych wątków niebezpiecznych szablonów bez wątków (pomyśl o błędach), ale dla nowego kodu zaprojektowanego od początku dla świata wielowątkowego jest bardzo rzadko potrzebny.
Największy koszt to łatwość konserwacji kodu. –