5
我是一个刚刚开始修补它的node.js新手。我有一段代码执行一个处理所有cpu核心上的字符串的函数,并且我想确定哪个工作者首先用它的id完成函数,然后杀死每个工作者(或者仅仅是出口节点)。功能完成后杀死node.js工作人员
这里是我的程序的简化代码:
var cluster = require('cluster'),
cpus = require("os").cpus().length, // 4 cores
myArray = ["foo","bar","baz","qux"]; // 1 string per core
if (cluster.isMaster) {
for (var i = 0; i < cpus; i++) {
var worker = cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else if (cluster.isWorker) {
computeString(myArray[cluster.worker.id]);
}
function computeString() {
// Code to compute...
}
此代码的工作,和computeString()函数完成速度远远超过了
else if (cluster.isWorker) {}
以外执行呢?所以问题是,经过一个工作者/进程完成该功能,节点等待,直到每个进程完成他们的工作,并且在这些之后不终止,每个进程保持空闲直到我按下ctrl + c。
我的做法是:
function computeString() {
// Code to compute...
if (done) {
console.log("Worker #" + cluster.worker + " completed the task!");
for (var id in cluster.workers) {
cluster.workers[id].kill();
}
}
}
但自从我问我这里,它显然是行不通的:)
我来说,我想杀死,并在条件为真由一个地重新启动工作之一,请透露这 – mithra 2016-01-27 07:02:34
@mithra这取决于确切使用情况下,任何光线。也许创建一个新的问题,概括说明你试图完成的是什么。 – robertklep 2016-01-27 14:25:34