リスト内の要素に対して徹底的なペアワイズ比較を行うメソッドを並列化する必要があります。シリアル実装は簡単です:
foreach (var element1 in list)
foreach (var element2 in list)
foo(element1, element2);
この場合、foo は element1 または element2 の状態を変更しません。ネストされた Parallel.ForEach ステートメントを単純に実行するのは安全ではないことはわかっています。
Parallel.ForEach(list, delegate(A element1)
{
Parallel.ForEach(list, delegate(A element2)
{
foo(element1, element2);
});
});
並列タスク ライブラリを使用してこれを実装する理想的な方法は何でしょうか?