3

タスク並列ライブラリへのデリゲートの内部はスレッド セーフですか? つまり、そのデリゲート内で宣言された変数の値はそのスレッドに分離されていますか?

例:

Parallel.ForEach(collection, item => {
    var something = new Something(item.Property);
});

同じ操作somethingによって作成された別のスレッドによって上書きされないように保護され、常にスレッドに固有であることが保証されていますか?Parallel

4

1 に答える 1

5

これはデリゲートであるため、ローカル変数であり、値型somethingの場合は確かにスレッドセーフです。もちろん、変数が共有参照オブジェクトへの参照(たとえば、デリゲートが持つ変数への参照)を保持している場合は、上書きできます。クロージャーとして使用)

于 2012-05-04T22:14:16.843 に答える