- Easy switch from a pool type to another :white_check_mark:
- No runtime dependencies :white_check_mark:
- Proper integration with Node.js [async_hooks](https://nodejs.org/api/async_hooks.html) :white_check_mark:
-- Support CommonJS, ESM, and TypeScript :white_check_mark:
+- Support for CommonJS, ESM, and TypeScript :white_check_mark:
- Support for [worker_threads](https://nodejs.org/api/worker_threads.html) and [cluster](https://nodejs.org/api/cluster.html) Node.js modules :white_check_mark:
-- Support multiple task functions :white_check_mark:
-- Support sync and async task functions :white_check_mark:
+- Support for multiple task functions :white_check_mark:
+- Support for sync and async task functions :white_check_mark:
- Tasks distribution strategies :white_check_mark:
+- Lockless tasks queueing :white_check_mark:
+- Queued tasks rescheduling:
+ - Task stealing :white_check_mark:
+ - Tasks stealing under back pressure :white_check_mark:
+ - Tasks redistribution on worker error :white_check_mark:
- General guidelines on pool choice :white_check_mark:
- Error handling out of the box :white_check_mark:
- Widely tested :white_check_mark:
- [Overview](#overview)
- [Installation](#installation)
- [Usage](#usage)
-- [Node versions](#node-versions)
+- [Node.js versions](#nodejs-versions)
- [API](#api)
- [General guidelines](#general-guidelines)
- [Worker choice strategies](#worker-choice-strategies)
pool.emitter.on(PoolEvents.busy, () => console.info('Pool is busy'))
// the execute method signature is the same for both implementations,
-// so you can easy switch from one to another
+// so you can easily switch from one to another
pool
.execute()
.then((res) => {
Remember that workers can only send and receive structured-cloneable data.
-## Node versions
+## Node.js versions
-Node versions >= 16.14.x are supported.
+Node.js versions >= 16.14.x are supported.
## [API](./docs/api.md)