var cluster = require('cluster');
var http = require('http');
var fs = require("fs");
//var process = require("process");
var num = require("os").cpus().length;

if (cluster.isMaster) {
    if (fs.existsSync("aa.txt")) {
        fs.unlinkSync("aa.txt");
    }
    // Fork workers.
    for (var i = 0; i < num; i++) {
        //console.log("fork " + i);
        var worker = cluster.fork();
        worker.on("message", function(msg) {
            finish++;
            if (finish == num) {
                console.log("all done.");
            }
            this.kill();
        });

    }

    var finish = 0;

    cluster.on('exit', function(worker, code, signal) {
        console.log('worker ' + worker.process.pid + ' died');
    });
} else {
    // Workers can share any TCP connection
    // In this case its a HTTP server
    /*    console.log("start http server @ " + cluster.worker.process.pid);
    http.createServer(function(req, res) {
        console.log("request @ " + cluster.worker.process.pid);
        res.writeHead(200);
        setTimeout(function() {
            res.end("hello world\n @ " + cluster.worker.process.pid);
        }, 20000);
        var i = 9999999999999;
        while(i-- > 0)
        {

        }
    }).listen(8000);
*/
    var i = 99999;
    var worker = cluster.worker;

    var fd = fs.openSync("aa.txt", "a+");
    //console.log(fd);

    while (i-- > 0) {
        //console.log(i + "@" + worker.process.pid);
        fs.writeSync(fd, i + "@" + worker.process.pid + "\r\n");
    }
    fs.closeSync(fd);
    process.send("ok");
    //worker.kill();
}

 

posted on 2015-03-03 18:02  lyqu  阅读(154)  评论(0)    收藏  举报