Нелогично ли использовать оператор forall после инструкции orderby, например: array.AsParallel().Orderby(n => n.ToString()).ForAll(n => {});
в параллельном запросе, поскольку заказ будет отменен forall?Параллельный запрос OrderBy и ForAll размещение
2
A
ответ
1
Операция OrderBy
вводит «сохранение порядка» во все последующие операции в запросе. Это означает, что порядок будет сохранен, даже если он параллелен.
Однако ForAll
будет «Выполнить недетерминированно параллельно», поэтому заказав последовательность первым, а затем только с использованием ForAll
, который не заботится действительно не имеет особый смысла.
Подробнее о порядке сохранения заказов в PLINQ here.
Соответствующая часть ссылки состоит в том, что 'ForAll()' "Выполняется недетерминистически параллельно", даже если упорядочена последовательность источников. Это означает, что 'OrderBy()' действительно не имеет смысла в вышеупомянутом запросе. – svick
@svick ничего себе, я пропустил это, спасибо за упоминание! – nvoigt