У меня есть код, который я сейчас оптимизирую для concurrency в многоядерных архитектурах. В одном из моих классов я нашел вложенный цикл foreach
. В основном внешний цикл повторяется через массив объектов NetworkInterface
. Внутренний цикл повторяется, хотя сетевые интерфейсы IP-адресов.
Это заставило меня задуматься, есть ли вложенные Parallel.ForEach
петли обязательно хорошая идея? После прочтения этой статьи (Nested Parallel.ForEach Loops в том же списке?) Я до сих пор не знаю, что применимо в отношении эффективности и параллельного дизайна. В этом примере используются инструкции Parallel.ForEach
, применяемые к списку, в котором обе петли выполняют операции в этом списке.
В моем примере циклы выполняют разные вещи, поэтому, если я:
- Использовать вложенные петли Parallel.ForEach?
- Пользователь Parallel.ForEach в родительском цикле и оставьте внутренний цикл as-is?