<div align="center">
[](https://github.com/poolifier/poolifier/graphs/commit-activity)
-[](https://www.npmjs.com/package/poolifier)
+[](https://www.npmjs.com/package/poolifier)
[](https://github.com/poolifier/poolifier/actions/workflows/ci.yml)
-[](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
-[](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
+[](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
+[](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
[](https://standardjs.com)
[](https://discord.gg/vXxZhyb3b6)
[](https://opencollective.com/poolifier)
- Tasks distribution strategies :white_check_mark:
- Lockless tasks queueing :white_check_mark:
- Queued tasks rescheduling:
- - Task stealing on empty queue :white_check_mark:
+ - Task stealing on idle :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:
- Active community :white_check_mark:
-- Code quality [](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
- [](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
- [](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
- [](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
- [](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
- [](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
-- Code security [](https://sonarcloud.io/dashboard?id=pioardi_poolifier) [](https://sonarcloud.io/dashboard?id=pioardi_poolifier)
+- Code quality [](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
+ [](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
+ [](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
+ [](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
+ [](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
+ [](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
+- Code security [](https://sonarcloud.io/dashboard?id=poolifier_poolifier) [](https://sonarcloud.io/dashboard?id=poolifier_poolifier)
## Table of contents
## Usage
-You can implement a [worker_threads](https://nodejs.org/api/worker_threads.html#class-worker) worker in a simple way by extending the class _ThreadWorker_:
+You can implement a poolifier [worker_threads](https://nodejs.org/api/worker_threads.html#class-worker) worker in a simple way by extending the class _ThreadWorker_:
```js
-'use strict'
-const { ThreadWorker } = require('poolifier')
+import { ThreadWorker } from 'poolifier'
function yourFunction(data) {
// this will be executed in the worker thread,
Instantiate your pool based on your needs :
```js
-'use strict'
-const { DynamicThreadPool, FixedThreadPool, PoolEvents, availableParallelism } = require('poolifier')
+import { DynamicThreadPool, FixedThreadPool, PoolEvents, availableParallelism } from 'poolifier'
// a fixed worker_threads pool
const pool = new FixedThreadPool(availableParallelism(), './yourWorker.js', {
- errorHandler: (e) => console.error(e),
+ errorHandler: e => console.error(e),
onlineHandler: () => console.info('worker is online')
})
// or a dynamic worker_threads pool
const pool = new DynamicThreadPool(Math.floor(availableParallelism() / 2), availableParallelism(), './yourWorker.js', {
- errorHandler: (e) => console.error(e),
+ errorHandler: e => console.error(e),
onlineHandler: () => console.info('worker is online')
})
// so you can easily switch from one to another
pool
.execute()
- .then((res) => {
+ .then(res => {
console.info(res)
})
- .catch((err) => {
+ .catch(err => {
console.error(err)
})
```