UNPKG

threadful

Version:

Common 'Thread' behavior for Browsers (using Web Workers) or Node (using Child Process).

71 lines (60 loc) 1.42 kB
var Threadful = require("./../../Threadful.js"); var pool = new Threadful.ThreadPool({ threads: 1 }); var timeLimit = 10000; var starting = 10000000; var current = starting; var primes = []; var reset = function() { current = starting; primes = []; }; var nextNumber = function() { current += 1; return current; }; var isPrime = function(i) { if (i===0) return false; if (i<4) return true; var u = i/2; var prime = true; for (var t=2;t<=u;t++) { if (i%t===0) { prime = false; break; } } return prime; }; reset(); console.log("\nCalculating Primes on main thread..."); var start = new Date().getTime(); while (true) { var n = nextNumber(); var p = isPrime(n); if (p) primes.push(n);; var t = new Date().getTime()-start; if (t>=timeLimit) { console.log("Found "+primes.length+" prime numbers in "+t+" ms."); break; } } reset(); console.log("\nCalculating Primes on ThreadPool..."); pool.install("isPrime",isPrime,function(error,result){ start = new Date().getTime(); pool.distribute("isPrime",nextNumber,function(error,result,value){ if (result===true) primes.push(value); var t = new Date().getTime()-start; if (t>=timeLimit) { console.log("Found "+primes.length+" prime numbers in "+t+" ms."); done(); } },function(error,result){ done(); }); }); var done = function() { process.exit(); };