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.1Windows Server 2012 R2Windows 10 版本 1507:Windows 8.1、Windows Server 2012 R2 和 Windows 10 版本上的 Windows 应用商店应用支持此函数1507. 当 Windows 应用商店应用调用此函数时,它将替换为对 FlsAlloc 的内联调用。 有关函数文档 ,请参阅 FlsAlloc

Windows 10版本 1511Windows 10 版本 1607:通用 Windows 平台 (UWP) 应用完全支持此函数,不再替换为对 FlsAlloc 的内联调用。

进程的线程可以在对 TlsFreeTlsSetValueTlsGetValue 函数的后续调用中使用 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

另请参阅

进程和线程函数

线程本地存储

TlsFree

TlsGetValue

TlsSetValue

VBS enclave 中可用的 Vertdll API