The Wayback Machine - https://web.archive.org/web/20200620182542/https://github.com/watson/worker-threads-pool
Skip to content
Easily manage a pool of Node.js Worker Threads
JavaScript
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test test: fix 'bug' introduced in Node 10.7.0 Oct 14, 2018
.gitignore Initial commit Jun 24, 2018
.npmignore Initial commit Jun 24, 2018
.travis.yml Initial commit Jun 24, 2018
LICENSE Initial commit Jun 24, 2018
README.md docs: improve README.md Jul 16, 2018
index.js Add maxWaiting config option Jun 27, 2018
package.json 2.0.0 Jun 27, 2018

README.md

worker-threads-pool

Easily manage a pool of Node.js Worker Threads.

npm Build status js-standard-style

Installation

npm install worker-threads-pool --save

Prerequisites

Worker Threads in Node.js are still an experimental feature and is only supported in Node.js v10.5.0 and above. To use Worker Threads, you need to run node with the --experimental-worker flag:

node --experimental-worker app.js

Usage

const Pool = require('worker-threads-pool')

const pool = new Pool({max: 5})

for (let i = 0; i < 100; i++) {
  pool.acquire('/my/worker.js', function (err, worker) {
    if (err) throw err
    console.log(`started worker ${i} (pool size: ${pool.size})`)
    worker.on('exit', function () {
      console.log(`worker ${i} exited (pool size: ${pool.size})`)
    })
  })
}

API

pool = new Pool([options])

options is an optional object/dictionary with the any of the following properties:

  • max - Maximum number of workers allowed in the pool. Other workers will be queued and started once there's room in the pool (default: 1)
  • maxWaiting - Maximum number of workers waiting to be started when the pool is full. The callback to pool.acquire will be called with an error in case this limit is reached

pool.size

Number of active workers in the pool.

pool.acquire(filename[, options], callback)

The filename and options arguments are passed directly to new Worker(filename, options).

The callback argument will be called with the an optional error object and the worker once it's created.

pool.destroy([callback])

Calls worker.terminate() on all workers in the pool.

Will call the optional callback once all workers have terminated.

License

MIT

You can’t perform that action at this time.