以下のコードスニペットには違いがありますか?もしそうなら、何?AsParallel.ForAll対Parallel.ForEach
myList.AsParallel().ForAll(i => { /*DO SOMETHING*/ });
と
Parallel.ForEach(mylist, i => { /*DO SOMETHING*/ });
メインスレッドが完了するまでに、すべての子スレッドを待つのだろうか? MVCアプリケーションで、コントローラのアクションで並列処理を行っている場合、メインスレッドが完了した後、子スレッドに何が起こりますか?彼らは中止されるか、メインスレッドが完了した後でも完了しますか?
私はあなたにお読みになることをお勧めします:http://reedcopsey.com/2010/02/03/parallelism-in-net-part-8-plinqs-forall-method/ – Mir
もし私があなただったら、別の質問を開きますあなたのMVCの並列処理のために。 – Pacane
予期しない結果を引き起こすAsParallel()、ForAll()に注意してください。たとえば、このコードをクリックすると、myEnumerable.AsParallel()。ForAll(iはstring => otherDictionary.Add(i、0))というボタンが表示されます。 otherDictionaryのキーとしてnullが追加されます。私はforeachループを使うために書き直さなければならなかった。奇妙な。 – YukiSakura