8.0.0 • Published 4 years ago

appolo-thread v8.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

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

8.0.0

4 years ago

1.0.4

4 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago