mgr
Easier multithreading for Node.
Why?
Because multi-threaded node applications are unwieldy to work with, and I needed to work with them.
API
.job
Used by new child processes to expose functions (tasks) to parent processes.
It takes two arguments:
- The name of the job (case sensitive).
- A function to call when it's ready.
Jobs will only run when called by their parent process, and must always return a promise. If you've got a sweet Babel setup, I recommend using async
functions. They're way nicer and crafted from unicorn tears.
When a job finishes, the value is sent to the parent process (same goes for errors).
.Fork
Fork
creates a new child node process and aims it at a file path you pass it. Any jobs declared by the child process can be run through Fork
.
Paths must be absolute.
// Import the Fork class. // The absolute path to a .js file.const file = `/slave-code.js` // Spawns a new process.const slave = file
fork.run
Starts a job in the child process, returning a promise.
Job names are case-sensitive.
slave
If the job is expecting arguments, you can pass one immediately after the job name.
slave
To keep stuff simple, only one argument is allowed.
Installing
From npm
$ npm install mgr --save
From GitHub
$ git clone https://github.com/PsychoLlama/mgr.git$ cd mgr$ npm install$ npm run build
Running tests
First, install from GitHub. npm only has the compiled code.
Be sure to run the build first:
# Run once. $ npm run build # OPTIONAL: watch for changes. $ npm run build -- --watch
Now you can run the tests.
$ npm test
- mgr
- Abbreviation, "manager"