@V_Tjuryakin
Перфекто

Решение с многопоточностью для node.js?

Здравствуйте. Есть необходимость работать в N количество одновременных потоков, которые не зависят друг от друга. Структура такая: каждый поток делает запрос и пишет в базу, и это происходит в цикле, пока у потока не кончиться цикл.

В голову приходит только создание через cluster N количество воркеров, но воркеров будет в разы больше чем ядр у процессора.

Может есть какие-то другие решения (пример) или по моей задумке какие-то предложения?
Если есть возможность, прошу подкрепить примером.
  • Вопрос задан
  • 1295 просмотров
Решения вопроса 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Можно сделать и в 1 потоке через очереди и асинхронность. Имеем N массивов A1.. AN, стартуем для них в цикле для каждого свой eachSeries, примерно так:
async.eachSeries(A1, function(item, cb) {
  // сюда приходит item, когда с ним покончено, то делаем cb()
}, function() {
  // все готово
});

Для каждого массива пока предыдущий элемент не отработает (не вернет управление через callback), то следующий не начнет обрабатываться. Если хочется использовать много процессоров, то разделяете задачу на части и запускаете при помощи cluster много процессов, передаявя каждому свою часть работы через переменные окружения или IPC: worker.send.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы