第二十一章 线程本地存储(Thread-Local Storage)
1.动态TLS
图中TlsGetValue(gdwTlsIndex2)在线程1和线程2中返回的值是不同的。
在创建线程时,进程会为当前创建的线程分配一个void *的数组作为TLS用。它用于存储只限当前线程可见的全局变量。
从而使进程中的每个线程都可以有自已的(不能其它线程访问的)全局变量。
TlsAlloc在返回时会先把槽中的值置为0。每个线程至少有64个槽。
2.静态TLS
__declspec(thread)关键字用于声明,线程本地的全局变量。
要求声明的变量必须是全局变量或静态变量。
3.Common API:
TlsAlloc TlsFree
TlsSetValue TlsGetValue
__declspec(thread)