Turn blocking code to asynchronous functions
const asyncme = poolSize: 1 disposable: true;asyncme//that's how you pass parameters;console;
poolSize How many workers to spawn. Defaults to cpu core count. Pass
0 for none.
disposable Kill each worker as soon as its work is completed. Defaults to
run(task<function>, [...args]) => <Promise>
Pass a function with the blocking code plus any optional arguments.
Always return the result from inside the function.
spawn([count=1]<Number>) => <asyncMeInstance>
Add workers on demand. Defaults to
1. Returns the instance.
exit() => <Promise>
Gracefully kill all the workers when their work is completed. The promise is resolved when all the workers have been killed.
exitNow() => <Promise>
Immediately kill all the workers without waiting. The promise is resolved when all the workers have been killed.
The internal pool of workers (child processes).
There are many examples in the
examples folder showing many possible situations like running parallel tasks, throwing errors, killing the workers and limitations.
The workers are child processes spawned with process.fork() and the communication is made using standard node process messaging.
The task functions are serialized and then executed on the child process using the Function constructor which will practically
eval() the function, so keep that in mind and don't pass unsafe code.
Tested on the current node LTS (v6.9.5). Uses many es6 features so older node versions might not work.
Doesn't work on the browser.
require() inside the tasks.
External scope is not transfered.
Asynchronous code won't be properly handled (the promise will resolve and/or the worker might be dead before it is completed).