tlsAlloc 函数 (processthreadsapi.h)
分配线程本地存储 (TLS) 索引。 进程的任何线程随后都可以使用此索引来存储和检索线程本地的值,因为每个线程都会收到自己的索引槽。
语法
DWORD TlsAlloc();
返回值
如果函数成功,则返回值为 TLS 索引。 索引的槽初始化为零。
如果函数失败,则 返回值TLS_OUT_OF_INDEXES。 要获得更多的错误信息,请调用 GetLastError。
注解
Windows Phone 8.1:Windows Phone 8.1 及更高版本上的 Windows Phone 应用商店应用支持此函数。 当Windows Phone应用商店应用调用此函数时,它将替换为对 FlsAlloc 的内联调用。 有关函数文档 ,请参阅 FlsAlloc 。
Windows 8.1、Windows Server 2012 R2 和 Windows 10 版本 1507:Windows 8.1、Windows Server 2012 R2 和 Windows 10 版本上的 Windows 应用商店应用支持此函数1507. 当 Windows 应用商店应用调用此函数时,它将替换为对 FlsAlloc 的内联调用。 有关函数文档 ,请参阅 FlsAlloc 。
Windows 10版本 1511 和 Windows 10 版本 1607:通用 Windows 平台 (UWP) 应用完全支持此函数,不再替换为对 FlsAlloc 的内联调用。
进程的线程可以在对 TlsFree、 TlsSetValue 或 TlsGetValue 函数的后续调用中使用 TLS 索引。 TLS 索引的值应被视为不透明值;不要假定它是从零开始的数组的索引。
TLS 索引通常在进程或动态链接库 (DLL) 初始化期间分配。 分配 TLS 索引时,其存储槽将初始化为 NULL。 分配 TLS 索引后,进程的每个线程都可以使用它来访问自己的 TLS 存储槽。 若要将值存储在其 TLS 槽中,线程在对 TlsSetValue 的调用中指定索引。 线程在对 TlsGetValue 的后续调用中指定相同的索引,以检索存储的值。
TLS 索引跨进程边界无效。 DLL 不能假定在一个进程中分配的索引在另一个进程中有效。
示例
有关示例,请参阅 使用线程本地存储 或在 Dynamic-Link 库中使用线程本地存储。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | processthreadsapi.h (包括 Windows Vista 上的 Windows.h、Windows 7、Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib;Windows Phone 8.1 上的 WindowsPhoneCore.lib |
DLL | Windows Phone 8.1 上的 KernelBase.dll;Kernel32.dll |