0

AFAIK g++ 和 cl 都支持编译器特定的 TL 存储......所以我想知道 C++11 TLS 与他们现在支持的不同吗?

线程本地存储 (TLS) 是给定多线程进程中的每个线程可以分配存储线程特定数据的位置的方法。通过 TLS API([TlsAlloc]、[TlsGetValue]、[TlsSetValue] 和 [TlsFree])支持动态绑定(运行时)线程特定数据。除了现有的 API 实现之外,Win32 和 Visual C++ 编译器现在还支持静态绑定(加载时)每线程数据。

对 VS 11的支持也被列为部分支持。对于 g++,它甚至不在 GCC4.7 中

4

2 回答 2

3

使用 g++,它非常接近,至少对于基于 ELF 的系统而言。只需编译就
-Dthread_local=__thread可以获得大部分内容——唯一的问题是没有调用构造函数和析构函数,但只要你对线程局部变量使用 POD 类型,这不是问题。

于 2011-11-05T23:09:44.190 回答
1

该标准仅在一个月前发布。我敢肯定,在他们开始执行如此艰巨的任务之前,许多设计会议等都在进行。顺便说一句,大多数 c++ 编译器并不完全支持标准的 C++98 版本——所以请耐心等待。

于 2011-11-05T23:07:41.177 回答