10

スレッドローカル変数を多用するライブラリを作成しています。C++でスレッドローカル変数を取得するさまざまな方法のパフォーマンスをテストするいくつかのベンチマークを指摘できますか。

  • C ++0xthread_local変数
  • コンパイラ拡張(Gcc __thread、...)
  • boost :: threads_specific_ptr
  • pthread
  • ウィンドウズ
  • ..。

C ++ 0x thread_localは、それを提供するコンパイラーではるかに優れたパフォーマンスを発揮しますか?

4

2 に答える 2

1

これらは通常、スレッドのプライベート メモリ空間内の配列内の単純なオフセットとして実装されます。Xしたがって、タイプのスレッド固有変数 にアクセスするとT

T y = X;

大まかに翻訳すると、

T y = *(T*)(cur_thread.local_tbl[key_X]);

これは単純すぎて、実装間でパフォーマンスに大きなばらつきがあるとは予想できません。とはいえ、そのようなベンチマークを見つけた場合は、こちらでフォローアップしてください.

于 2010-06-12T16:19:12.323 に答える
1

いつでもご利用いただけますtime.h。パフォーマンスのものをテストするときの友人であり、他に何も利用できません。

于 2010-06-09T18:22:56.027 に答える