线程局部存储

     窗口附加字节(window extra bytes)通过使用SetWindowWord和SetWindowLong函数来将数据与一个指定的窗口关联起来。

可以使用TLS将数据与一个正在执行的指定线程关联起来(例如我们可以将创建线程的时间与线程关联起来);然后当线程结束的时候可以知道线程的运行的时间。

     c/c++运行库使用了TLS.

     动态TLS:四个使用函数TlsAlloc,TlsSetValue,TlsGetValue,TlsFree.Microsoft保证至少有TLS_MINMUM_AVAILABLE(在WinNT.h中被定义为64)标志可供使用,每个标志可以被设为FREE,INUSE;TlsSetValue(没有进行错误检测)不会修改另一个线程的TLS.

     静态TLS:_declspec(thread) DWORD gt_dwStartTime = 0;_declspec(thread)声明的变量必须是全局变量或静态变量。编译器在编译时会将所有的tls变量放到它们的.tls段中,连接器会将所有对象模块的.ls合并成一个大的。进程创建一个新线程时,系统会自动分配另一块内存来保存新线程的静态TLS变量.当我们通过LoadLibrary(Ex)来链接一个包含静态TLS的DLL时为了给新的DLL提供它需要的额外TLS内存,系统必须查看进程中所有已有的线程,并口扩大它们的TLS内存块。当FreeLibrary时那么与进程中的每个线程相关联的内存块也被相应的缩减。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值