X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=README.md;h=3099709bd3bc41327776d1c89fde26771c455486;hb=93005fd699cf65bd0796558210d0206c4198ec3c;hp=ff51fdb8eebf1a558c2f8eaecfcf3da06a9693f5;hpb=4f8e444d4f7f3492d7aa09f12ced5a320ab68d30;p=poolifier.git
diff --git a/README.md b/README.md
index ff51fdb8..3099709b 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
-
Node Thread Pool and Cluster Pool
+Node.js Worker_Threads and Cluster Worker Pool
@@ -35,16 +35,21 @@ Moreover you can execute your tasks using an API designed to improve the **devel
Please consult our [general guidelines](#general-guidelines).
- Easy to use :white_check_mark:
-- Performance [benchmarks](./benchmarks/README.md) :white_check_mark:
- Fixed and dynamic pool size :white_check_mark:
- Easy switch from a pool type to another :white_check_mark:
+- Performance [benchmarks](./benchmarks/README.md) :white_check_mark:
- No runtime dependencies :white_check_mark:
-- Proper integration with node [async_hooks](https://nodejs.org/api/async_hooks.html) :white_check_mark:
-- Support CommonJS, ESM, and TypeScript :white_check_mark:
+- Proper integration with Node.js [async_hooks](https://nodejs.org/api/async_hooks.html) :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:
@@ -62,7 +67,7 @@ Please consult our [general guidelines](#general-guidelines).
- [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)
@@ -110,7 +115,7 @@ const { DynamicThreadPool, FixedThreadPool, PoolEvents, availableParallelism } =
// 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')
})
@@ -119,7 +124,7 @@ pool.emitter.on(PoolEvents.busy, () => console.info('Pool is busy'))
// 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')
})
@@ -128,26 +133,42 @@ pool.emitter.on(PoolEvents.ready, () => console.info('Pool is ready'))
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 => {
+ .then((res) => {
console.info(res)
})
- .catch(err => {
+ .catch((err) => {
console.error(err)
})
```
You can do the same with the classes _ClusterWorker_, _FixedClusterPool_ and _DynamicClusterPool_.
-**See [examples](./examples/) folder for more details (in particular if you want to use a pool with [multiple task functions](./examples/multiFunctionExample.js))**.
+**See [examples](./examples/) for more details**:
+
+- [Javascript](./examples/javascript/)
+- [Typescript](./examples/typescript/)
+ - [HTTP client pool](./examples/typescript/http-client-pool/)
+ - [SMTP client pool](./examples/typescript/smtp-client-pool/)
+ - [HTTP server pool](./examples/typescript/http-server-pool/)
+ - [Express worker_threads pool](./examples/typescript/http-server-pool/express-worker_threads/)
+ - [Express cluster pool](./examples/typescript/http-server-pool/express-cluster/)
+ - [Express hybrid pool](./examples/typescript/http-server-pool/express-hybrid/)
+ - [Fastify worker_threads pool](./examples/typescript/http-server-pool/fastify-worker_threads/)
+ - [Fastify cluster pool](./examples/typescript/http-server-pool/fastify-cluster/)
+ - [Fastify hybrid pool](./examples/typescript/http-server-pool/fastify-hybrid/)
+ - [WebSocket server pool](./examples/typescript/websocket-server-pool/)
+ - [ws worker_threads pool](./examples/typescript/websocket-server-pool/ws-worker_threads/)
+ - [ws cluster pool](./examples/typescript/websocket-server-pool/ws-cluster/)
+ - [ws hybrid pool](./examples/typescript/websocket-server-pool/ws-hybrid/)
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)
@@ -167,11 +188,14 @@ See [CONTRIBUTING](CONTRIBUTING.md) guidelines.
- [**Alessandro Pio Ardizio**](https://github.com/pioardi)
-**_Contributors_**
+**Maintainers:**
-- [**Shinigami92**](https://github.com/Shinigami92)
- [**Jérôme Benoit**](https://github.com/jerome-benoit)
+**Contributors:**
+
+- [**Shinigami92**](https://github.com/Shinigami92)
+
## License
[MIT](./LICENSE)