exframe Worker Pool ===================
exframe Worker Pool
===================
A library for managing a maximum number of concurrent work items locally and scheduling what comes next by priority
``bash`
npm install exframe-worker-pool
javascript
const { WorkerPool } = require('exframe-worker-pool');const pool = new WorkerPool();
const result = await pool.work(async () => {
return 10;
});
console.log(result); // 10
pool.eventEmitter.on('empty', () => {
return 'pool is empty'; //fires when count === 0
})
`class WorkerPool
Manages the set of concurrent work and schedules what comes next by priority
$3
|field|type|description|
|-----|----|-----------|
|max|integer
default = 10|the maximum number of concurrent workers that may be executing|
|overflow|integer
default = 5|the buffer over the maximum concurrent workers reserved for executing with the forced flag -- queued work cannot execute until after the workingCount reduces to less than max|
$3
Takes a worker resource from the pool, once the calling code is done, it will need to call
release on the worker|field|type|description|
|-----|----|-----------|
|priority|integer
default = 1|the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first|
|force|boolean
default = false|flag to indicate that the work can execute within the overflow buffer if max concurrency has been reached|
#####
release() => void Releases the worker resource back to the worker pool
$3
Executes the given callback immediately or once the pool has freed enough worker resources to allow the given callback to execute
|field|type|description|
|-----|----|-----------|
|priority|integer
default = 1|the priority assigned to the work -- priority is sorted descending, so something with a higher priority will execute first|
|force`|boolean
default = false|flag to indicate that the work can execute within the overflow buffer if max concurrency has been reached|
$3
Event emitter that exposes the following events
|event|parameters|description|
|-----|----------|-----------|
|empty|null|Fires whenever a worker is released and the count is reduced to 0|
$3
The number of worker that are currently executing
$3
The number of work items waiting to execute
$3
The maxmium number of concurrent workers
$3
The buffer of work items over the max that can be forced into the pool
$3
The ratio of the current working count over the sum of max and overflow
$3
The ratio of the queued count over the sum of max and overflow