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;