Проблема с многопоточностью вложенного цикла заключается в разделении работы и данных на независимые пулы.Если ваш цикл изменяет массивы по мере их прохождения, это не будет хорошо работать при разделении на несколько потоков.Если ваши циклы уже настроены так, что входные данные доступны только для чтения, а выходные данные цикла переходят в другую структуру данных, то есть надежда на многопоточность.Вход только для чтения + локализованный вывод хороши для многопоточности.
Существует также вопрос того, сколько работы происходит в каждой итерации цикла.Вы не получите много пользы от многопоточности цикла, который делает очень мало для каждой итерации.Большая часть времени настенных часов в небольшом быстром цикле будет потрачено на управление циклом, а не на саму работу, а создание многопоточного цикла только увеличит накладные расходы на управление циклом.Если ваш цикл выполняет нетривиальный объем работы за итерацию, у вас больше шансов увидеть выгоду от многопоточности.
Если в каждую итерацию входят операции блокировки, такие как файловый ввод / вывод, вы можете подумать, что многопоточность цикла улучшит ситуацию.Во многих случаях многопоточность цикла, связанного с файловым вводом-выводом, только ухудшит ситуацию.Аппаратное устройство на другом конце этих файловых входов / выходов обычно не может перемещать физическую головку чтения / записи быстрее, поэтому просьба сделать что-то большее в то же время не принесет пользы.Вероятно, было бы лучше изучить использование асинхронного ввода-вывода, прежде чем пытаться выполнить многопоточность цикла.
Наконец, не делайте этого, основываясь на предположении, где многопоточность может помочь.Измеряйте производительность кода до многопоточности и после.Если вы не можете найти ситуацию, когда многопоточность значительно улучшается, не делайте этого.Не стоит дополнительных усилий и рисков, чтобы иногда получить незначительное улучшение.