Miss any of our Open RFC calls?Watch the recordings here! »

appolo-thread

1.0.4 • Public • Published

Appolo Thread

Build Status Dependencies status NPM version npm Downloads Known Vulnerabilities

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 class
  • threads - number of threads to run
  • workerData - 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

Install

npm i appolo-thread

DownloadsWeekly Downloads

31

Version

1.0.4

License

MIT

Unpacked Size

40.8 kB

Total Files

32

Last publish

Collaborators

  • avatar