位置: 编程技术 - 正文

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

  • 视同销售行为的涉税处理?
  • 专利年费滞纳金计入什么科目
  • 金税盘交钱
  • 视同销售发放福利的会计分录
  • 营业收入是不是利润
  • 有两处收入的怎么报个税汇算清缴
  • 贷款公司是怎么贷款的
  • 会议服务费怎么开
  • 员工收到现金工资怎么写收据
  • 材料实际成本包括哪些内容
  • 自然灾害导致的车损可以理赔嘛
  • 资产重组的税务筹划
  • 摊余成本加还是减
  • 固定资产报废的账务处理例题
  • 个税退税入账
  • 期末未缴税额为什么会有数据
  • 企业购销业务流程包括哪些
  • 股权投资损失怎么算出来的
  • 信汇凭证是转账凭证吗
  • 网络招聘费计入什么会计科目
  • 已申报未导入什么意思呀
  • win10外接音响没反应
  • 利润分配会计处理时间
  • 民非提供服务收到的现金怎么算
  • internet笔记
  • php怎么把图片存入mysql
  • 高新技术企业补助需要交所得税吗
  • lstm多对多
  • php的file函数
  • php imagefill
  • 详解php匿名函数
  • php实现留言板功能
  • linux+php
  • yolov3模型训练
  • 福利费专用发票如何账务处理
  • react组件定义
  • linuxshel
  • xa 事务
  • 企业所得税核查报告
  • 帝国cms文件夹介绍
  • 培训费发票开具的要求有?
  • Table ‘xxx’ is marked as crashed and should be repaired 错误解决方法参考
  • 现金流量表中的现金流量包括哪些
  • 未达起征点免税额怎么计算
  • 股权转让账务咋处理
  • 退回的个税手续费如何账务处理
  • 建筑业异地预缴税款最新规定
  • 上年未结转金额是什么意思
  • 企业申请支付宝账号步骤
  • 销售收入用营业收入还是营业总收入
  • 电子承兑汇票如何入账
  • 企业成立第二年有补贴吗
  • sql server使用心得
  • 使用sql server
  • mysql 5.7.32
  • windows安装kafka
  • 详述社会体育学科的研究对象
  • 用OpenBSD 3.8 release自带的FTPD架设FTP服务器
  • 如何修改apache
  • win8电脑管理员权限在哪里设置
  • win7如何设置网络连接路由器
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • nodejs性能对比
  • Nodejs实现多人同时在线移动鼠标的小游戏分享
  • awk 查找
  • 自定义右键属性是什么
  • unity移动游戏开发
  • nodejs ejs
  • jquery keydown
  • sdk官方网站
  • jQuery实现Select左右复制移动内容
  • jquery attr和prop
  • js定义数据类型
  • 事务所是干什么的会计
  • 北京中石化开增票各区网点
  • 深圳市税务局好考吗
  • 展示板效果图
  • 企业怎么成立工会组织
  • 没有代理记账资格的公司能代理记账吗
  • 个人有关事项核查情况的报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设