Stockage local des threads (TLS)

Mise à jour : novembre 2007

Le stockage local des threads (TLS, Thread Local Storage) est une méthode qui permet à chaque thread d'un processus multithread de réserver des emplacements dans lesquels stocker des données qui lui sont propres. Les données propres au thread de type dynamique (d'exécution) sont prises en charge par l'intermédiaire de l'API TLS (TlsAlloc, TlsGetValue, TlsSetValue et TlsFree). Win32 et le compilateur Visual C++ prennent en charge à présent les données statiques (au moment du chargement) des threads en plus de l'implémentation de l'API existante.

Implémentation de l'API pour TLS

La méthode TLS est implémentée via la couche API Win32 ainsi que le compilateur. Pour plus d'informations, consultez la documentation de l'API Win32 pour TlsAlloc, TlsGetValue, TlsSetValue et TlsFree.

Le compilateur Visual C++ inclut un mot clé pour automatiser davantage les opérations de stockage local du thread (TLS), de préférence à la couche API. Cette syntaxe est décrite dans la section suivante, Implémentation du compilateur pour TLS.

Implémentation du compilateur pour TLS

Pour prendre en charge TLS, un nouvel attribut, thread, a été ajouté aux langages C et C++ et est géré par le compilateur Visual C++. Cet attribut est un modificateur de classe de stockage étendu, comme nous l'avons décrit dans la section précédente. Utilisez le mot clé __declspec pour déclarer une variable thread. Par exemple, le code suivant déclare une variable locale de thread entière et lui affecte une valeur initiale :

__declspec( thread ) int tls_i = 1;

Voir aussi

Concepts

Multithreading à l'aide de C et de Win32

Règles et limitations pour TLS