Мне нужно распараллелить метод, который делает исчерпывающее парное сравнение элементов в списке. Последовательная реализация проста:
foreach (var element1 in list)
foreach (var element2 in list)
foo(element1, element2);
В этом случае foo не изменит состояние элемента1 или element2. Я знаю, что небезопасно просто выполнять вложенные инструкции Parallel.ForEach:
Parallel.ForEach(list, delegate(A element1)
{
Parallel.ForEach(list, delegate(A element2)
{
foo(element1, element2);
});
});
Каким будет идеальный способ реализовать это с помощью библиотеки параллельных задач?