我正在使用cluster
模块nodejs
。
以下是我设置的方法:
var cluster = require('cluster');
if (cluster.isMaster) {
var numCPUs = require('os').cpus().length;
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
}else{
console.log("Turkey Test");
}
现在,我正在PC上分配6个线程(6个核心)。因此,在调试我的应用程序并从控制台读取数据时,将显示:
无论有多少群集正在运行,无论如何都只能使console.log
输出一次?
答案 0 :(得分:2)
您可以使用这样一个事实:您可以与工作人员进行通信,并发送一条消息,告诉每个工作人员是否应该记录。您发送它以便只有一个工作人员(例如第一个工作人员)应该记录:
var cluster = require('cluster');
if (cluster.isMaster) {
var numCPUs = require('os').cpus().length;
for (var i = 0; i < numCPUs; i++) {
cluster.fork().send({doLog: i == 0});
}
}else{
process.on('message', function(msg) {
if(msg.doLog) {
console.log('Turkey Test');
}
});
}