8.0.0 • Published 5 years ago
appolo-thread v8.0.0
Appolo Thread
Thread Pool using node worker_threads
Installation
npm install appolo-thread --saveUsage
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