node-threads-pool
Advanced tools
Comparing version 1.0.1 to 2.0.0
56
index.js
@@ -1,52 +0,8 @@ | ||
const {Worker} = require("worker_threads"); | ||
const {isMainThread} = require("worker_threads"); | ||
module.exports = class { | ||
constructor(max = 1) { | ||
this._max = max; | ||
this._queue = []; | ||
this._workers = new Set(); | ||
}; | ||
async createWorker(filename, options, resolve, reject) { | ||
const self = this; | ||
const {_queue, _workers} = this; | ||
const worker = new Worker(filename, options); | ||
worker.on("message", message => { | ||
resolve(message); | ||
worker.terminate(); | ||
}); | ||
worker.on("error", error => { | ||
resolve(error); | ||
worker.terminate(); | ||
}); | ||
worker.on("exit", code => { | ||
_workers.delete(worker); | ||
if(_queue.length > 0) { | ||
const {filename, options, resolve, reject} = _queue.splice(0, 1)[0]; | ||
self.createWorker(filename, options, resolve, reject); | ||
} | ||
if(code !== 0) { | ||
reject(new Error(`thread error. code: ${code}`)); | ||
} | ||
}); | ||
_workers.add(worker); | ||
} | ||
async run(filename, options) { | ||
const self = this; | ||
const {_workers, _queue, _max} = this; | ||
return new Promise((resolve, reject) => { | ||
if(_workers.size < _max) { | ||
self.createWorker(filename, options, resolve, reject); | ||
} else { | ||
_queue.push({ | ||
filename, | ||
options, | ||
resolve, | ||
reject | ||
}); | ||
} | ||
}); | ||
} | ||
module.exports = { | ||
Eve: require('./lib/eve'), | ||
Adam: require('./lib/adam'), | ||
Thread: require('./lib/thread'), | ||
isMainThread | ||
} |
{ | ||
"name": "node-threads-pool", | ||
"version": "1.0.1", | ||
"version": "2.0.0", | ||
"description": "worker threads pool", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "node ./test/app.js" | ||
"eve": "node ./test/eve-example.js", | ||
"adam": "node ./test/adam-example.js" | ||
}, | ||
@@ -9,0 +10,0 @@ "repository": { |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
8096
8
225
1