Как организовать очередь потоков (worker_threads) в nodejs?

Мне нужно выполнить 100 длительных операций, чтобы все это было быстрее, я хочу поделить эти операции на 10 потоков.

app.js:

const workerpool = require('workerpool');
const pool = workerpool.pool('./worker.js', {
    maxWorkers: 10,
    workerType: 'worker_threads'
});

for (let i = 1; i <= 100; i++) {
    pool
        .exec("start", [i])
        .then(function (result) {
            console.log('result', result);
        })
        .catch(function (err) {
            console.error(err);
        })
        .then(function () {
            pool.terminate();
        });
}

worker.js:

const workerpool = require("workerpool");
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

async function start(num) {
    await delay( 1000 );
    return num;
}

workerpool.worker({
    start: start
});

Я ожидал что будет создаваться по 10 (maxWorkers) потоков, и как только активных станет меньше 10, то создастся новый, и так далее пока не выполнит все 100 операций.

Как это реализовать?

Буду благодарен за помощь!


Ответы (0 шт):