Visual Studio 11中的c ++ 11 thread_local关键字支持

Elo*_*off 14 c++ thread-local visual-c++ c++11 visual-studio-2012

所以Visual Studio支持的c ++ 11功能列表.

thread_local支持被标记为partial.我无法找到这里究竟部分支持意味着什么的解释.他们只是别名__declspec(线程)吗?

我可以使用boost :: thread_specific_ptr,但似乎有一些报告说boost :: thread_specific_ptr很慢.这可能是也可能不是.

具体来说,我希望在最新的linux + gcc和windows + msvc上使用x86/x64上的快速TLS.快速意义在可能的情况下没有系统调用(我认为这对于上述平台是可行的.)

Elo*_*off 6

所以我做了一些挖掘thread_local语义.gcc的__thread和msvc的__declspec(线程)具有相同的语义和thread_local(除了动态初始化,它可能已经或可能没有进入标准).所以这对我的用例来说真的不是问题.我只是创建一个别名一个或另一个平台特定属性的定义.

  • 遗憾的是,这些机制的问题在于它们不支持非POD类型.线程终止时,我希望它的TLS对象调用它们的析构函数.`__thread`或`__declspec(thread)`都不能处理.如果你不需要它,这种方法应该可以正常工作 (10认同)