*
* @param {Number} numThreads Num of threads for this worker pool
* @param {string} a file path with implementation of @see ThreadWorker class
- * @param {Object} an object with possible options for example errorHandler, onlineHandler, exitHandler
+ * @param {Object} an object with possible options for example errorHandler, onlineHandler.
*/
constructor (numThreads, filename, opts) {
if (!isMainThread) throw new Error('Cannot start a thread pool from a worker thread !!!')
const worker = new Worker(path.resolve(this.filename), { env: SHARE_ENV })
worker.on('error', this.opts.errorHandler || empty)
worker.on('online', this.opts.onlineHandler || empty)
- // TODO remove the workers array , use only the map data structure
- // handle properly when a thread exit
+ // TODO handle properly when a thread exit
worker.on('exit', this.opts.exitHandler || empty)
this.workers.push(worker)
const { port1, port2 } = new MessageChannel()
worker.port2 = port2
// we will attach a listener for every task,
// when task is completed the listener will be removed but to avoid warnings we are increasing the max listeners size
- worker.port2.setMaxListeners(this.opts.maxTasks)
+ worker.port2.setMaxListeners(this.opts.maxTasks || 1000)
// init tasks map
this.tasks.set(worker, 0)
return worker