0

AFAIKは、g ++とclの両方がコンパイラ固有のTLストレージをサポートしています...したがって、C ++ 11 TLSは、現在サポートされているものとは異なるのでしょうか。

スレッドローカルストレージ(TLS)は、特定のマルチスレッドプロセスの各スレッドが、スレッド固有のデータを格納する場所を割り当てることができる方法です。動的にバインドされた(実行時の)スレッド固有のデータは、TLS API([TlsAlloc]、[TlsGetValue]、[TlsSetValue]、および[TlsFree])によってサポートされます。Win32とVisualC++コンパイラは、既存のAPI実装に加えて、静的にバインドされた(ロード時の)スレッドごとのデータをサポートするようになりました。

また、VS11のサポートは部分的にリストされています。g ++の場合、GCC4.7でもありません

4

2 に答える 2

3

g++ を使用すると、少なくとも ELF ベースのシステムの場合、かなり近くなります。でコンパイルするだけで
-Dthread_local=__thread、そのほとんどを取得できます。唯一の問題は、コンストラクターとデストラクタが呼び出されないことですが、スレッドローカル変数に POD 型を使用している限り、これは問題ではありません。

于 2011-11-05T23:09:44.190 に答える
1

この規格は、わずか 1 か月前に公開されました。そのような大きな仕事に着手する前に、多くの設計会議などが行われていると思います. ちなみに、ほとんどの C++ コンパイラは標準の C++98 バージョンを完全にはサポートしていません。

于 2011-11-05T23:07:41.177 に答える