funwork

0.0.1 • Public • Published

FunWork - Make functions become non-blocking thougth workers.

Brief

CPU intensive calculations blocks event-loop while its execution.

Workers solve this problem, but require some extra plumbing.

FunWork combines workers and nextTick() (deasync) to avoid the mess of dealing with workers by simply converting a function into a "worker function".

The only restriction is that it must be a pure function because workers haven't access to the master process scope.

That is: Source functions haven't access to scope, context and cannot modify its arguments (or cause any side effect in any way).

Installation:

npm install [--save] funwork

Usage:

var funwork = require("funwork");
...
var nonBlockingFn = funwork(blockingFn);

Example:

 
    var funwork = require("funwork");
 
    // Blocking pure function
    function f0 (x){
        // Do some expensive calculation:
        for (var i = 0; i< 1000000000; i++) {
            x--;
        };
        return 2 * x * i;
    }
 
    var f = funwork(f0);
 
    setTimeout(function() {
        console.log ("Hello World!!!");
    }, 1300);
 
    // Function calls that will be executed in backgrond thought workers:
    console.log ("RESULT: ", f(7));
    console.log ("RESULT: ", f(22));
 

Contributing

If you are interested in contributing with this project, you can do it in many ways:

  • Creating and/or mantainig documentation.

  • Implementing new features or improving code implementation.

  • Reporting bugs and/or fixing it.

  • Sending me any other feedback.

  • Whatever you like...

Please, contact-me, open issues or send pull-requests thought this project GIT repository

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.0.1
    3
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 0.0.1
    3

Package Sidebar

Install

npm i funwork

Weekly Downloads

3

Version

0.0.1

License

GPL-3.0

Last publish

Collaborators

  • joanmi