appolo-thread
v8.0.0
Published
thread pool
Downloads
4
Maintainers
Readme
Appolo Thread
Thread Pool using node worker_threads
Installation
npm install appolo-thread --save
Usage
import { Pool } from 'appolo-thread';
async function test() {
const pool = new Pool({
path:'./workers/fibonacci.js',
threads: 2
});
await pool.initialize();
let result = await pool.run(50);
}
worker class, must inherit Worker
import { Worker } from 'appolo-thread';
export class Fibonacci extends Worker {
async run(num: number) {
let a = 1, b = 0, temp;
while (num >= 0) {
temp = a;
a = a + b;
b = temp;
num--;
}
return b;
}
}
Api
Pool options:
path
- path to worker classthreads
- number of threads to runworkerData
- custom worker data object will be passed to worker constructor
const pool = new Pool({
path:'./workers/fibonacci.js',
threads: 2,
workerData :{some:"value"}
});
Initialize
initialize the pool return promise when completed
const pool = new Pool({
path:'./workers/fibonacci.js',
threads: 2,
});
await pool.initialize();
you can also implement worker initialize method.
the method will be called on pool initialize
import { Worker } from 'appolo-thread';
export class Fibonacci extends Worker {
async initialize(){
//do something
}
async run(num: number) {
//...
}
}
Run
run worker with custom params. return promise with the worker result
const pool = new Pool({
path:'./workers/fibonacci.js',
threads: 2,
});
await pool.initialize();
let reuslt = await pool.run({some:"value"})
Message event
The message
event is emitted from the worker using the worker postMessage
method
const pool = new Pool({
path:'./workers/fibonacci.js',
threads: 2,
});
await pool.initialize();
pool.on("message",function(data) {
console.log(data) // some message
})
post message in worker class
import { Worker } from 'appolo-thread';
export class Fibonacci extends Worker {
async initialize(){
this.postMessage("some message")
}
async run(num: number) {
//...
}
}
Uncaught event
The error
event is emitted if the worker thread throws an uncaught exception.
const pool = new Pool({
path:'./workers/fibonacci.js',
threads: 2,
});
await pool.initialize();
pool.on("error",function(e) {
console.log(e)
})
License
MIT