每个线程都有一份单独的副本。其实初始化时编译器会自动生成代码调用TlsAlloc(), 访问这个变量时会自动生成代码调用TlsGetValue(), TlsSetValue()

解决方案 »

  1.   

    那就是说静态TLS没用了?说来说去还是动态TLS
      

  2.   

    有一点区别,初始化的TlsIndex可以存放在PE文件中,在加载时系统自动分配Tls slot,这样就用不着TlsAlloc了。另外对程序员来说区别大多了, 一个写代码时好像访问普通变量,细节全部交给编译器去实现, 另一个必须自己关心对应的TlsIndex然后调用API去读取/写入,而且关联到了特定OS平台,移植性不好。