2

スレッドローカルストレージは、グローバル変数と静的変数をスレッドに対してローカルにする以外の場所で使用されていますか?それは、私たちが作成する新しいコードで役立ちますか?

4

4 に答える 4

4

TLS は確かに新しいコードで役立ちます。errno( C/C++ の ように) 各スレッドに固有である必要があるグローバル変数が必要な場合は、thread-local-storage が最適です。

于 2009-11-23T18:18:31.733 に答える
1

スレッド固有のシングルトン オブジェクト? 各スレッドが 1 つのリクエストを処理するマルチスレッド Web サーバー。一部の TLS データ (リクエスト URL や一部のデータベース接続など) の可能性がかなりあります。基本的には、必要に応じてリクエスト処理中の任意の時点で使用されることを意図したリソースです。 ) 必要に応じてコード内のどこからでも簡単にアクセスできるようにします。

于 2009-11-23T18:53:45.000 に答える
0

スレッド固有のエラー処理と最適化(C)にのみ必要でした:

__thread int cpfs_errno;
static __thread struct Cpfs *g_cpfs;

この例では、これにより、struct Cpfs *変更されない数十の関数のコンテキストポインターを渡す必要がなくなります。

于 2010-08-25T06:40:30.740 に答える
0

最近errnoでは、通常、スレッド ローカル ストレージに配置されます。

スレッド ローカル ストレージの使用が問題になる場合があります (たとえば、スタートアップ コードを必要とする DLL などの共有ライブラリ)。

于 2009-11-23T18:48:50.767 に答える