Есть ли простой способ запустить параллель для l oop in node.js? - PullRequest
0 голосов
/ 14 апреля 2020

Исходя из C#, я использую библиотеку Parallel. пример для параллели для l oop в c# будет:

Parallel.ForEach(sourceCollection, item => Process(item));

В node.js я не смог найти ничего подобного. Я знаю библиотеку рабочих потоков, но нет ли более простого способа запустить al oop без реализации пула потоков за кулисами?

1 Ответ

0 голосов
/ 14 апреля 2020

Node.js не имеет встроенного механизма для параллельного запуска l oop. Вам нужно будет найти модуль, который уже может это сделать, или вручную создать свой собственный итератор, который запускает workerThread для каждого вызова l oop (или использовал пул потоков), а затем сообщать результаты из workerThread.

Если бы я выполнял вашу l oop и мне нужно было выполнять несколько синхронных операций Process(item) параллельно, я бы, вероятно, создал бы рабочую очередь и пул работников, обслуживающих очередь, и я бы дал обещание возвращая обертку около Process(). Внутри этой обертки он добавит ее в workQueue, зарегистрирует обратный вызов в очереди для завершения, а затем, когда он завершит, разрешит возвращенное обещание. Затем вы должны использовать Promise.all(), чтобы собрать все результаты по порядку. Внутри workQueue у вас будет набор работников, которые отбирают элемент из очереди, запускают его в отдельном потоке, затем сообщают результат, затем получают следующий элемент и т. Д.

...