1
Parallel.Foreach()
を使用すると、スレッドローカルデータを実現するためのメカニズムが組み込まれています。私はPLINQ AsParallel()
を使用するときに同様のものが必要です。スレッドローカルデータをPLINQ AsParallel()で使用しますか?
私はlist.AsParallel().ProcessElement(threadlocalresource)
のようなPLINQ文を書くことができます。
ThreadLocal<T>
が助けになる可能性がありますが、PLINQ文の完了後にリソースを処分する方法がわかりません。
コピー/パッチを追加し、ウサギの穴の下に依存関係のトンを経由して巻き上げることを期待して、AsParallel()
のソースコードを調べました...本当に簡単に実行できません。
コードでは、using()は値を破棄しないでください。 – CoderBrien
@CoderBrien [参照元によると、それはありません。](http://referencesource.microsoft.com/#mscorlib/system/threading/ThreadLocal.cs,80de775120278afd) – svick
ああ、つかまります。 'using()'は 'SomeType'オブジェクトへの参照を解放することによって' ThreadLocal'を破棄しますが、 'Dispose()'呼び出しをオブジェクト自体に伝播しません。ありがとう!!! – CoderBrien