对于' thread_local'的当前支持状态是什么?跨平台?

时间:2015-04-01 19:47:15

标签: c++ c++11 visual-c++ gcc clang

我想了解一下'thread_local'关键字在不同编译器和平台上的当前支持状态。

我对常见的桌面和移动平台特别感兴趣。我可以找到的信息看起来很不稳定,因为有报道称它在某些平台上工作而不是在其他平台上工作,或者提到支持是WIP。我们欢迎即使对于单一平台也能确认支持(或缺乏支持)的答案。如果有任何警告,请提及支持。

  • Windows(gcc,clang,msvc)
  • Linux(gcc,clang)
  • OS X(gcc,clang)
  • Android(gcc,clang)
  • 的iOS
  • 黑莓
  • Windows Phone / RT / etc

2 个答案:

答案 0 :(得分:7)

作为另一个优秀答案的补充:MSVC 2013目前不支持它。

page on support of core language features声称部分支持。但是,看看细节看来:

  

线程本地存储被列为“部分”,因为VC提供了   多年来非标准扩展 __declspec(线程)。   (值得注意的是,C ++ 11 thread_local支持非POD,但是__declspec(线程)   没有。)

它已在MSVC 2014 CTP 3中实施(自2014年夏季开始;请参阅blog entry),并在MSVS2015中提供。

答案 1 :(得分:3)

对于clang,您可以查看C++11 implementation status

  

语言功能:线程本地存储
   C ++ 11提案: N2659
  在Clang中可用吗? Clang 3.3

  

Clang 3.3及更高版本实现了所有ISO C++ 2011 standard。 ...   thread_local支持当前需要来自g ++ - 4.8或更高版本的C ++运行时库。

你也可以使用libc++,这是"在Apple的OS X上实现100%完整的C ++ 11实现。"