位置: 编程技术 - 正文

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

  • 费用的进项税额可以抵扣吗
  • 什么是所得税税负
  • 企业如何代员工缴社保
  • 劳务外包合同需要交税吗
  • 保险公司报销修手机
  • 应交税费为什么记借方
  • 年审和税审的区别是什么
  • 2019年所得税季度增值税怎么报
  • 房租违约金收入怎么做账
  • 境外企业所得税税率
  • 营改增 旅游服务
  • 原材料入库是付款凭证吗
  • 买车时的保险包括哪些费用,多少钱
  • 发票认证了还能退回吗
  • 增值税的附加
  • 供应商不给货款怎么办
  • 税务大厅补报个税怎样申报
  • 把水费开成物业费发票有什么风险吗?
  • 企业个人所得税逾期未申报怎么办
  • 关于个人所得税下列说法正确的是
  • 垫资的利息的合法区间
  • 货物退回发票冲红会计分录
  • 无法支付的其他账户
  • 汽车运输增值税专用发票多少税点
  • 小规模农产品可以抵扣吗
  • 年折旧率怎么计算折旧几年
  • 工会经费列支比例
  • 事业单位项目前景怎么样
  • 发票备注栏的填写规定
  • 收购自然人股东的股权要注意什么
  • 日历怎么不能添加事件了
  • 房屋租赁进项税
  • win10待机自动关机软件
  • 浅谈php技术
  • myfastupdate.exe - myfastupdate是什么进程文件 有什么用
  • 在Windowsserver2019环境下,配置IP地址使用
  • 利息收入属于什么税目
  • 个税申报工资比实发工资少,但没超过5000可以举报吗
  • php获取开始与结束的函数
  • 上年第4季度企业所得税
  • 研发入库的产品销售出库怎样做账
  • 预缴的附加税需要转出吗
  • 如何查询以前申请的新西兰签证记录
  • sql server怎么用sql语句创建数据库
  • 合并会计报表合并范围
  • 增值税留抵税额是什么意思
  • 股权收购被收购方怎么做账
  • 应交增值税明细账怎么填写样本
  • 注销公司详细步骤
  • 企业之间交换房地产要交土地增值税吗
  • 个税申报哪些可以减免
  • 房产税是怎么样
  • 溢价收购股权所得税税率
  • 一般纳税人开红字专用发票流程
  • 净现金流量算残值么
  • 先开发票后付款如何记账?
  • 金税盘维护费抵减分录
  • 房租费计提如何入账
  • 在mysql中使用什么语句来查询数据
  • 严密防范什么安全风险,严厉打击敌对势力犯罪
  • win7系统硬盘安装版
  • win10找不到打印机驱动
  • 苹果mac系统中英文切换
  • win10 预览窗口
  • windows7准备配置windows
  • win8.1系统升级win10
  • win8.1无线
  • vps禁用ipv6
  • 小郭聊一聊
  • 如何用dos命令删除程序
  • unity导出3d模型
  • js对象常用方法
  • 备份系统三要素
  • python字符串连接join
  • 为什么要去山西
  • 融资租赁利息是哪个科目
  • 什么是出口退税政策
  • 社保卡手机缴费怎么交不了
  • 个人所得税app可以更改电话号码吗
  • 民办非企业暂行
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设