位置: 编程技术 - 正文

Node.JS中事件轮询(Event Loop)的解析(nodejs事件循环和js事件循环)

编辑:rootadmin

推荐整理分享Node.JS中事件轮询(Event Loop)的解析(nodejs事件循环和js事件循环),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs中的事件循环的执行顺序,node.js事件循环分为几个阶段,node.js事件循环分为几个阶段,nodejs中的事件循环的执行顺序,node 事件轮询,node.js 事件循环,node.js 事件循环,node 事件轮询,内容如对您有帮助,希望把文章链接给更多的朋友!

当我们知道I/O操作和创建新线程的开销是巨大的!

网站延迟的开销

对于一个网站,后台大多不需要进行复杂的计算,我们的程序大多时间花费在I/O读取上。

看到一个数据:IO操作可以比数据处理慢几个数量级。高端SSD固态硬盘的读取速度可以达到mb-mb/s;读取字节需要1.4微秒。而在此期间,2GHZ频率的CPU可以执行个指令处理周期。而网络数据的IO甚至更慢!

NodeJS采用单线程非阻塞的架构解决老大难的IO问题

当采用多线程时,为每一个请求开启一个新的线程(Apache就是这样做的)。当并发增多,线程的消耗会十分严重。

什么是阻塞和非阻塞呢?

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

Node.JS中事件轮询(Event Loop)的解析(nodejs事件循环和js事件循环)

用node执行以下代码,会先输出我不会被阻塞,再输出我读完文件了

一个知乎的回答:

你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果,如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。

NodeJS的事件轮询

这是node虽然为单线程,但是可以处理大并发,高吞吐量的核心。一个事件轮询拥有下面三个组件

事件队列:这是一个FIFO模型的队列,一方推入事件,另一方推出事件 队列的读取轮询线程组件,也就是主角Event Loop, 单独的线程池,用来执行长任务(也就是threadpool,node底层,用C++写的,不会阻塞)

在nodejs中,只有一个主线程(也就是前面说的单线程)来不断读取轮询(书中称为调用I/O观察者)队列中是否有事件。

而对于读取文件,HTTP

请求等(现代cpu处理能力很强,事件处理相当快,导致运行速度下降的瓶颈在I/O)比较容易堵塞的事件,就在这个单线程中

执行肯定会造成堵塞,所以Event Loop

会把这类型的事件交给底层的线程池执行,并给予线程池一个回调函数,当线程池操作

完成这堵塞任务后,便把结果和回调函数一起再放入轮询队列中。

总结

标签: nodejs事件循环和js事件循环

本文链接地址:https://www.jiuchutong.com/biancheng/376386.html 转载请保留说明!

上一篇:从零学习node.js之mysql数据库的操作(五)(node.js快速入门)

下一篇:从零学习node.js之express入门(六)(node js入门)

  • 新办营利性医疗机构是否免征土地使用税和房产税?
  • 会计凭证借贷方向
  • 实收资本增加印花税税目
  • 收入总额的概念
  • 税局用户名
  • 房地产企业净利润为负的原因
  • 个人劳务报酬所得税率表
  • 增值税专票怎么抵扣
  • 事业基金弥补收支差额是什么意思
  • 企业基本保险
  • 企业支付小额劳务费税率
  • 营改增后小规模纳税人税率是多少
  • 勾选发票必须当月认证吗
  • 个人所得税app入职时间不对
  • 简化丢失专用发票的处理流程
  • 多计提的社保费,可否计入营业外收入
  • 收到农产品发票3%抵9%怎么做账
  • 个体工商户变更法人
  • 坏账准备确认后可以转回吗
  • 合同签订后税率调整
  • 征地过程中会产生哪些费用
  • 苹果双系统不小心删了苹果系统
  • win10 bios设置
  • deepin启动延时
  • 单位价值5000元二手设备怎么算
  • 怎么获取win10密钥
  • 强制关闭mac系统的快捷键
  • 固定资产折旧计算方法
  • 工商企业年报网上申报流程
  • 第一启动盘设置为u盘
  • linux 密码重置
  • 营改增后房地产企业账务处理
  • 先开票后发货开票时确认收入
  • 购入旧的固定资产的入账价值
  • 详解php实现执行任务
  • 大前端入门指南
  • vue2-elm
  • php curl_setopt
  • 员工福利费怎样计提
  • linuxroot切换
  • 怎么修改手机的地理位置
  • 社会团体所得税汇算清缴
  • 营业收入和营业外收入的区别
  • 持有至到期投资科目被取消了吗
  • phpipam使用
  • 不开增值税发票的销售收入报税的操作流程是?
  • 进项抵扣了还要交附加嘛
  • 个税申报汇算清缴流程
  • 广告费的税额计入哪里
  • 商标注册费2000元记哪个科目
  • 事业单位购入
  • 会计做账的凭据是什么
  • 购买职工福利
  • 总分公司如何承担责任
  • 资产减值后折旧怎么算
  • 账面价值,账面净值,账面余额三者的区别存货
  • 会计复式记账法题目
  • 生产费用明细账
  • 修改mysql数据库字符集
  • sql server 用法
  • xp怎么解压文件
  • win xp 添加网络打印机
  • CentOS上使用Squid+Stunnel搭建代理服务器教程
  • win xp系统安装
  • wlan device什么意思
  • xp蓝屏事件
  • 电脑重做系统后打印机不能打印
  • win10快速隐藏窗口
  • 怎么用win7兼容模式运行
  • windows怎么右键
  • cocos2d android 游戏开发学习——CCAction(一)
  • 页面模板排序
  • javascript+css3开发打气球小游戏完整代码
  • python2.7多进程
  • linux监控程序
  • javascript入门教程
  • 广州地税官网
  • 高级人民法院党组书记级别
  • 请问3.3排量的汽车
  • 河北税务交社保显示未找到对应的城乡居民应缴费额配置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设