AFAIK g ++和cl都支持编译器特定的TL存储......所以我想知道C ++ 11 TLS与他们现在支持的不同吗?
线程本地存储(TLS)是每个线程中的一个方法 给定多线程进程可以分配存储的位置 特定于线程的数据。动态绑定(运行时)特定于线程 通过TLS API支持数据([TlsAlloc],[TlsGetValue], [TlsSetValue]和[TlsFree])。 Win32和Visual C ++编译器现在 除了支持静态绑定(加载时间)每线程数据 现有的API实现。
对于VS 11 支持也列为部分支持。 对于g ++,它甚至不在GCC4.7
中答案 0 :(得分:3)
使用g ++,它非常接近,至少对于基于ELF的系统。只需用。编译
-Dthread_local=__thread
并且你得到了大部分内容 - 唯一的问题是没有被调用的构造函数和析构函数,但只要你使用POD类型作为线程局部变量就不是问题。
答案 1 :(得分:1)
该标准仅在一个月前发布。我相信很多设计会议等都会在他们开始这么大的任务之前进行。顺便说一句,大多数c ++编译器都不完全支持标准的C ++ 98版本 - 所以请耐心等待。