10
[スレッドスタティック]
プライベート静的 Foo _foo;

public static Foo CurrentFoo {
   得る {
     if (_foo == null) {
         _foo = 新しい Foo();
     }
     _foo を返します。
   }
}

前のコードはスレッドセーフですか? それとも、メソッドをロックする必要がありますか?

4

2 に答える 2

15

ThreadStaticの場合、スレッドごとに1つのコピーがあります。したがって、定義上、そのスレッドセーフです。

このブログには、ThreadStaticに関するいくつかの良い情報があります。

于 2009-07-06T15:30:36.017 に答える
2

A[ThreadStatic]は、スレッド ローカル ストレージのコンパイラ/言語マジックです。つまり、スレッドにバインドされているため、コンテキスト スイッチがあっても、他のスレッドから直接アクセスできないため問題ありません。

于 2009-07-06T16:46:02.643 に答える