采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
if (cluster.isMaster) 是一个判断,代码第一次执行到这里时为true,然后执行函数 masterProcess(), 为什么会进入else呢?
const cluster = require('cluster') const cpus = require('os').cpus() let workers = [] const masterProcess = () => { console.log(`一共有 ${cpus.length} 个核`) console.log(`Master 主进程 ${process.pid} 启动`) for (let i = 0; i < cpus.length; i++) { console.log(`正在 Fork 子进程 ${i}`) const worker = cluster.fork() workers.push(worker) worker.on('message', message => { console.log(`主进程 ${process.pid} 收到 '${JSON.stringify(message)}' 来自 ${worker.process.pid}`) }) } workers.forEach(worker => { console.log(`主进程 ${process.pid} 发消息给子进程 ${worker.process.pid}`) worker.send({msg: `来自主进程的消息 ${process.pid}`}) }, this) } const childProcess = () => { console.log(`Worker 子进程 ${process.pid} 启动`) process.on('message', message => { console.log(`Worker 子进程 ${process.pid} 收到消息 '${JSON.stringify(message)}'`) }) console.log(`Worker 子进程 ${process.pid} 发消息给主进程`) process.send({msg: `来自子进程的消息 ${process.pid}`}) } if (cluster.isMaster) { masterProcess() console.log(111) } else { console.log(222) childProcess() }
检查下代码有没有问题哈,这里第一次是 master 主进程启动,后面就是多少核,就启动多少子进程了
非常感谢! 是我当初没有理解 cluster 模块的工作原理, cluster.fork() 出来的子进程会再次执行 js 文件,同时 cluster.isMaster 为false, 代码被每个子进程都执行了一遍
登录后可查看更多问答,登录/注册
Koa2+MongoDB+Parcel+Puppeteer+AntDesign快速搭建预告片网站
1.2k 7
983 6
795 6
905 6