第二十章 线程局部存储区

来源:互联网 发布:sql数据仓库培训 编辑:程序博客网 时间:2024/05/16 18:54

一、目的

        将数据与指定的线程关联起来。

二、动态TLS

        系统会为进程分配一组使用标记(每个标记可能是FREE、INUSE),线程需要则可以申请,然后将数据设置进去。

        TlsAlloc () 申请标记,清空标记中的数据。

        TlsSetAlloc 为标记设置数据。

        TlsGetAlloc 取出标记中的数据。

        TlsFree 取消申请的标记。

三、静态TLS

        1、全局变量或者静态变量 前用 __declspec(thread)修饰。

        2、所有此类变量会被生成到.tls段中。

        3、每一个线程都有此类变量的独立内存。

        注意:使用这种变量,编译器会生成额外的代码,因此性能很差。

0 0