タスク並列ライブラリのスレッドへのデリゲートの内部は安全ですか?つまり、そのスレッドに分離されたそのデリゲート内で宣言された変数の値ですか?.NETでの並列タスクのスレッドセーフティ
例:
Parallel.ForEach(collection, item => {
var something = new Something(item.Property);
});
は常に同じParallel
操作によって作成された別のスレッドによって上書きされるから保護スレッドに固有であることが保証something
ですか?
以下に説明するように、この例はスレッドセーフです。しかし、TPLを使用している場合には必ずしもそうではありません。タスクが独立しているかスレッドセーフであることを確認することは、プログラマの主な責任です。コンパイラの警告もツールもありません。 –