我正在尝试创建一个集群来在 CPU 之间传播散列,找到散列返回的集群供我使用,并在第一个响应时杀死所有其他工作人员。
我通过创建集群并运行函数来开始我的代码,然后将“发送”添加回主服务器,然后尝试添加逻辑来杀死所有工作人员,
我已阅读文档 Killing Node.js Workers after function is done作为参考,但它似乎不起作用 - 我可以看到 Node 操作仍在后台运行(在 2 核机器上),使用大量 CPU ,那么即使 Node 进程完成并返回到 bash 终端,我也会得到一些控制台日志。
我一生都无法弄清楚我哪里出了问题,所以任何帮助将不胜感激。
我当前的代码是:
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
let worker = cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
for (var id in cluster.workers) {
cluster.workers[id].kill();
}
process.exit(0);
});
function messageHandler(msg) {
console.log(msg);
if (msg.hash.length > 1) {
console.log(msg.hash);
}
}
for (const id in cluster.workers) {
cluster.workers[id].on('message', messageHandler);
}
} else {
console.log(`Worker ${process.pid} started and finished`)
console.log(parseInt(cluster.worker.id));
let difficulty = 5;
i = cluster.worker.id;
var start = new Date();
var hrstart = process.hrtime();
hash = computeHash(index, lasthash, timestamp, data, i);
while (hash.substring(0, difficulty) !== Array(difficulty + 1).join("0")) {
hash = computeHash(index, lasthash, timestamp, data, i);
i = i + cluster.worker.id;
}
var end = new Date() - start,
hrend = process.hrtime(hrstart);
console.info('Execution time (hr): %ds %dms', hrend[0], hrend[1] / 1000000)
console.log("Hash found from: " + i);
process.send({
hash: hash
});
process.exit(0);
}
达令说
相关分类