
tls
x313695373
有希望,有事做,能爱人
展开
-
线程局部存储,Part 4:访问__declspec(thread)变量
原文网址:http://www.nynaeve.net/?p=185昨天,我大致说了下编译器和链接器如何合作来支持TLS,但是并没有讲当访问__declspec(thread)变量时具体底层是个什么样子,或者说是怎么来做到的。在解释如何访问__declspec(thread)变量的内部工作原理之前,有必要了解下tlssup.c中的几个特殊变量。这些变量被_tls_used引用来翻译 2013-01-04 09:52:22 · 3235 阅读 · 0 评论 -
线程局部存储,Part 2:显式TLS
原文网址:http://www.nynaeve.net/?p=181线程局部存储,Part 2:显式TLS前一篇,我概述了windows中TLS的一些总体设计原则。大家可以从MSDN中得到关于TLS的高层接口和设计方法,但是有意思的却是其底层的实现。从实现来看,显式TLS API是目前两类实现TLS方法中较简单的一种,因此这种方法很少涉及内部实现的可变部分。正如我上次提到的,显式TLS翻译 2013-01-03 15:49:40 · 1239 阅读 · 0 评论 -
线程局部存储,Part 1:概述
原文网址:http://www.nynaeve.net/?p=180线程局部存储,Part 1:概述和其它主流多线程操作系统一样,Windows为大家提供一个机制,该机制允许程序员实现基于线程的局部状态存储。这种能力通常称为线程局部存储(Thread Local Storage,TLS),这对于那些需要保存线程相关信息但需要全局可见的应用场景非常有用。尽管TLS的介绍有很好的文档可参考翻译 2013-01-03 15:47:51 · 1129 阅读 · 0 评论 -
线程局部存储,Part 3:编译器和链接器对隐式TLS的支持
原文网址:http://www.nynaeve.net/?p=183线程局部存储,Part 3:编译器和链接器对隐式TLS的支持上次,我们探讨了显式TLS操作所采用的机制(包括TlsGetValue、TlsSetValue和其它相关例程)。尽管显式TLS被大量使用,但是TLS机制的更有意思的部分却是加载器对隐式TLS的支持或是编译器中的__declspec(thread)变量。虽然两种翻译 2013-01-03 16:21:31 · 1682 阅读 · 0 评论 -
线程局部存储,Part 6:Windows Server 2003中隐式TLS支持方法设计中的问题
原文网址:http://www.nynaeve.net/?p=187上周,我描述了在WindowsServer 2003中加载器如何处理隐式TLS支持。尽管TLS支持对于最初的要求支持的挺好,但是仍然存在一些让人不悦的地方。如果你一直看到这里,你可能已经注意到隐式TLS支持中设计方面的问题。这些缺陷最终鞭策微软在vista版本中对隐私TLS进行了重要的修正。WindowsServer翻译 2013-01-05 18:27:49 · 1113 阅读 · 0 评论 -
线程局部存储,Part 5:加载器对__declspec(thread)变量的支持(进程初始化阶段)
原文网址:http://www.nynaeve.net/?p=186上次,我描述了编译器和链接器为访问__declspec(thread)扩展类变量所使用的生成代码的机制。尽管此时它们已经为隐式TLS布置了舞台,但为了使整体能够工作,仍然需要加载器这个组件来提供必需的运行时支持。具体的,加载器将负责为每个模块分配TLS索引值,为每个线程的TEB中的ThreadLocalStorageP翻译 2013-01-05 11:50:21 · 1646 阅读 · 0 评论