Как организовать очередь потоков (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 операций.
Как это реализовать?
Буду благодарен за помощь!