Condividi tramite


Archiviazione locale di thread (TLS)

Aggiornamento: novembre 2007

La memoria locale di thread (TLS) rappresenta il metodo attraverso il quale ogni thread di un determinato processo multithread può allocare le posizioni in cui memorizzare i propri dati specifici. I dati specifici del thread di esecuzione associati in modo dinamico sono supportati tramite l'API TLS (TlsAlloc, TlsGetValue, TlsSetValue e TlsFree). In Win32 e nel compilatore di Visual C++ attualmente sono supportati i dati per thread associati in modo statico al caricamento, oltre all'implementazione dell'API esistente.

Implementazione dell'API per TLS

La memoria locale di thread viene implementata sia a livello dell'API Win32 che a livello del compilatore. Per ulteriori informazioni, vedere la documentazione dell'API Win32 relativa a TlsAlloc, TlsGetValue, TlsSetValue e TlsFree.

Nel compilatore di Visual C++ è stata inserita una parola chiave per rendere più automatiche le operazioni TLS, rispetto alle API. La relativa sintassi è descritta nella sezione successiva "Implementazione del compilatore per TLS".

Implementazione del compilatore per TLS

Per supportare TLS, è stato aggiunto ai linguaggi C e C++ un nuovo attributo thread, supportato dal compilatore di Visual C++. Questo attributo è un modificatore esteso della classe di memorizzazione, come descritto nella sezione precedente. Utilizzare la parola chiave __declspec per dichiarare una variabile con l'attributo thread. Nel codice seguente, ad esempio, viene dichiarata una variabile locale di thread di tipo integer e quindi inizializzata con un valore:

__declspec( thread ) int tls_i = 1;

Vedere anche

Concetti

Multithreading con C e Win32

Regole e limitazioni per TLS