Condividi tramite


Archiviazione locale di thread (TLS)

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 per [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