Можно ли как-нибудь использовать openMP для распараллеливания цикла со списком, в который может добавляться больше элементов на каждой итерации? Насколько я понимаю, openMP может распараллелить цикл for путем погружения диапазона в порции для каждого потока, но в этом случае диапазон изменяется, для одного случая цикл может иметь 10 итераций, а для другого 100, дело в том, что вlist Обычно у меня будет около 10-20 элементов.
Вот пример того, что я хотел бы распараллелить (обратите внимание, что порядок, в котором вещи вставляются в vectorOfResults, не имеет значения)
while(!list.empty()) {
vectorOfResults.push_back(performExpensiveFunction());
if (conditions) {
add new elements to the list;
}
}
Я думал о том, чтобы сделать что-то вроде, внутри цикла while, иметь цикл for с текущим «пакетом» элементов в списке (скопировать их во временный список), а затем следующий, пока итерация будетиспользовать недавно добавленные элементы, но я подумал, есть ли способ сделать это, используя другие конструкции openmp. (Я только сейчас немного о openmp).
Спасибо за вашу помощь.