内容:
1.多进程与多线程
2.node中多进程相关模块的使用
1.多进程与多线程
- 多线程:性能高;复杂、考验程序员
- 多进程:性能略低;简单、对程序员要求低
Node.js中默认:单进程、单线程,但是其可以实现多进程
多进程分为主进程和子进程:
- 主进程 = 守护进程(派生子进程)
- 子进程 = 工作进程
- 一般用子进程来完成任务,主进程来监视子进程
进程-怪:
- 普通程序不能“创建”进程,只有系统进程才能创建进程;只有主进程能分裂
- 进程是分裂出来
- 分裂出来的两个进程执行的是同一套代码
- 父子进程之间可以共享"句柄"
2.node中多进程相关模块的使用
- cluster:创建进程
- process:获取进程信息
多进程server实例:
1 const http=require('http'); 2 const cluster=require('cluster'); 3 const os=require('os'); 4 const process=require('process'); 5 6 if(cluster.isMaster){ 7 // 主进程: 8 for(let i=0;i<os.cpus().length;i++){ 9 // 创建子进程: 10 cluster.fork(); 11 } 12 13 console.log('主进程'); 14 }else{ 15 // 子进程: 16 let server=http.createServer((req, res)=>{ 17 // 打印当前执行的子进程的pid 18 console.log(process.pid); 19 20 res.write('aaaa'); 21 res.end(); 22 }); 23 24 server.listen(8080); 25 console.log('服务器开好了,在8080上'); 26 }
注:
这里的子进程之间不是一个一个接着来工作的,这是因为进程调度的原因 --->> 多个进程:第一个满了 -> 才启用第二个 -> 前两个都满了 -> 才启用第三个