集群如何在Node中继承预定义变量?

时间:2015-09-24 22:14:53

标签: javascript node.js

我们说我有这个代码

var running = false;
var cluster = require('cluster');
if(cluster.isMaster){
    cluster.fork();
    running = true;
}

在我的每一个叉子中,运行是真还是假?

2 个答案:

答案 0 :(得分:0)

您的叉子不是主人,所以我相信runningfalse,因为他们会跳过if分支。

编辑:只是确定,但快速测试发现了这些结果:

var running = false;
var cluster = require('cluster');

if (cluster.isMaster) {
    cluster.fork();
    cluster.fork();
    cluster.fork();
    running = true;
}

console.log('Master?', cluster.isMaster);
console.log('Running?', running);

输出:

Master? true
Running? true
Master? false
Running? false
Master? false
Master? false
Running? false
Running? false

答案 1 :(得分:0)

以下是您的代码的扩展版本:

var cluster = require('cluster');
var cpus = require('os').cpus().length;

var running = false;

if (cluster.isMaster) {
    for (var i = 0; i < cpus; i += 1) {
        cluster.fork();
        running = true;
    }
}

console.log('running: '+ running);

这是结果:

running: true
running: false
running: false
running: false
running: false

在此示例中,第一行是主进程,其他四行是子进程。其中有四个,因为我的CPU有4个核心。根据运行代码的机器,这可以是1或8或其他任何内容。

您可以在此处找到有关Node.js群集的更多信息:https://nodejs.org/api/cluster.html