Skip to content

Instantly share code, notes, and snippets.

@baudehlo
Created March 19, 2013 19:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save baudehlo/5199506 to your computer and use it in GitHub Desktop.
Save baudehlo/5199506 to your computer and use it in GitHub Desktop.
var cluster = require('cluster');
var numCPUs = parseInt(process.argv[2]) || 1;
var ready_workers = [];
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('online', function (worker) {
ready_workers.push(worker);
if (ready_workers.length === numCPUs) send_msg();
});
var scount = 0;
var time = process.hrtime();
var i = 0;
function send_msg () {
// send 5000 then give the event loop a look-in.
for (var n=0; n < 5000; n++) {
var worker = ready_workers[i++];
worker.send('msg');
scount++;
if (i === numCPUs) i = 0;
}
process.nextTick(send_msg);
}
setInterval(function () {
var diff = process.hrtime(time);
time = process.hrtime();
var secs = (diff[0] * 1e9 + diff[1]) / 1e9;
process.stdout.write("Rate: " + parseInt(scount/secs) + " \r");
scount = 0;
}, 1000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment