位置: 编程技术 - 正文

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入门)

  • 资源税计入什么科目
  • 城建税计税方法
  • 什么是印花税的税目
  • 金税四期上线后还需要会计吗
  • 个税如何变更公司
  • 接受资不抵债并账会计分录
  • 其他收益在报表哪个位置
  • 其他收益怎么用
  • 其他应收和其他应付怎么调账
  • 公司没有业务了 可以办理停业
  • 分公司是独立核算还是非独立核算
  • 次年度所得税预缴申报期限怎么执行?
  • 什么叫税后利息费用
  • 公司收到转账支票怎么盖章
  • 期末留抵税额可以留多久
  • 抵扣红字发票税点是多少
  • 购买税控设备怎么抵扣
  • 增值税滞留票产生的原因及处理办法
  • 公司的资本成本取决于投资人的必要报酬率
  • 个人承包集体企业违法吗
  • 工程项目分期付款
  • 餐饮店工装
  • 清算结业是什么意思
  • 红字发票怎么填申报表表二
  • 软件开发行业的现状
  • 增值税专用发票的税率是多少啊
  • win服务器安装
  • 建筑单位没有资质可以承包项目吗
  • 公司不运营了需要注销吗
  • elf.exe是什么程序
  • 税务的基本职能
  • 外贸出口退税进项发票勾选
  • 微信公众号web开发
  • 收到无法支付的押金收入
  • php rest api
  • php的curl实例
  • thinkphp5 ajax
  • php教程从入门到精通
  • 用现金报销差旅费及增值税怎么做账
  • 关税对企业有什么影响
  • wp留言板插件
  • 租赁公司成本如何计算
  • 案例详解:功能点估算法
  • 子公司借钱给母公司,未收取利息,要纳税吗
  • 科技型中小企业享受优惠税收政策
  • 纳税申报的流程表
  • 小规模纳税人应纳税额减征额怎么算
  • 差旅费退回怎么做账
  • 注册公司时的注册资金认缴是什么意思
  • 补缴以前年度所得税及滞纳金账务处理
  • 损益类科目借贷怎么记
  • 非营利组织注册资金可以用吗
  • 损益类账户属于资产还是负债
  • 红冲发票显示发票状态不正常
  • 托盘费用怎么核算
  • 租赁出租人分录
  • 财务会计与预算会计差异如何处理
  • 银行日记账怎么导出
  • 新安装的Ubuntu系统无法联网
  • Win7系统打印机共享无法保存打印机设置0x000006d9
  • Windows Update XP SP3官方下载地址
  • linux 请求
  • le启动exe是什么意思
  • linux的samba是什么
  • Cocos2dx CCLabelAtlas字体与CCLabelTTF字体的使用方法
  • UNITY开发工程师
  • 批处理命令不允许用户在文件夹内的文件
  • npm 发布组件
  • dos help命令
  • Python 正则表达式入门(初级篇)
  • 深入理解python递归
  • android动画实现方式
  • 全面解析少女时代关系
  • 出租车票真伪查询官网
  • 医保所属期起和所属期止
  • 企业自产自销农产品免税政策有哪些
  • 公务员中了彩票怎么领取
  • 企业所得税账务如何处理
  • 税收筹划与避税的性质相同
  • 先进单位表彰发言稿
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设