内容:

1.多进程与多线程

2.node中多进程相关模块的使用

1.多进程与多线程

  • 多线程:性能高;复杂、考验程序员
  • 多进程:性能略低;简单、对程序员要求低

Node.js中默认:单进程、单线程,但是其可以实现多进程

多进程分为主进程和子进程:

  • 主进程 = 守护进程(派生子进程)
  • 子进程 = 工作进程
  • 一般用子进程来完成任务,主进程来监视子进程

进程-怪:

  • 普通程序不能“创建”进程,只有系统进程才能创建进程;只有主进程能分裂
  • 进程是分裂出来
  • 分裂出来的两个进程执行的是同一套代码
  • 父子进程之间可以共享"句柄"

2.node中多进程相关模块的使用

  • cluster:创建进程
  • process:获取进程信息

多进程server实例:

 const http=require('http');
const cluster=require('cluster');
const os=require('os');
const process=require('process'); if(cluster.isMaster){
// 主进程:
for(let i=0;i<os.cpus().length;i++){
// 创建子进程:
cluster.fork();
} console.log('主进程');
}else{
// 子进程:
let server=http.createServer((req, res)=>{
// 打印当前执行的子进程的pid
console.log(process.pid); res.write('aaaa');
res.end();
}); server.listen(8080);
console.log('服务器开好了,在8080上');
}

注:

这里的子进程之间不是一个一个接着来工作的,这是因为进程调度的原因 --->> 多个进程:第一个满了 -> 才启用第二个 -> 前两个都满了 -> 才启用第三个

最新文章

  1. nodejs进阶(2)—函数模块调用
  2. Codevs 1860 最大数 string大法好,STL万岁。。
  3. confluence的安装、备份和恢复(wiki)
  4. jQuery的XX如何实现?——1.框架
  5. iOS7中都Bar的透明问题
  6. JavaScript 关于变量作用域的一道面试题
  7. leetcode -- Largest Rectangle in Histogram TODO O(N)
  8. HDU - 5036 Explosion
  9. HT for Web嵌入QtWebKit的client解决方式
  10. #Windows Phone:在HTML5专案中,如何从Javascript传送字串到C#的APP端
  11. Spring读取xml配置文件的原理与实现
  12. 通过java读取excle数据的方法,今天用到了留下来供以后参考使用
  13. GIL全局解释器锁+GIL全局解释器锁vs互斥锁+定时器+线程queue+进程池与线程池(同步与异步)
  14. SpringBoot 热启动
  15. javascript实现OOP编程
  16. UVALive 6908 Electric Bike dp
  17. dubbo用途介绍
  18. FastReport.Net使用:[20]条码控件使用
  19. python UI自动化实战记录九:添加日志
  20. java基础讲解07-----数组

热门文章

  1. CentOS使用安装光盘建立本地软件源
  2. css样式 float的理解
  3. 区间DP Zoj 3537 Cake 区间DP 最优三角形剖分
  4. (5)可变、不可变和hash函数
  5. HTML第二课——css【2】
  6. LeetCode-Microsoft-Clone Graph
  7. LG3377 【模板】左偏树(可并堆)
  8. 通过Jersey客户端API调用REST风格的Web服务
  9. 网卡驱动_WDS
  10. 基于TLS(线程局部存储)的高效timelog实现