我正在嘗試創建一個集群來在 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);}
操作完成后殺死所有節點集群工作人員
慕的地8271018
2023-10-20 16:07:31