位置: 编程技术 - 正文

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

  • 外轮供应公司远洋运输供应公司的退税申报?
  • 个人所得税手续费返还时间
  • 对公账户是不是实时到账
  • 企业所得税报税日期
  • 核算无形资产的过程中,使用的会计账户有
  • 取得划拨或赠与资产需要缴企业所得税吗?
  • 企业为职工社保补缴怎么办理
  • 一般纳税人的兼职合法吗
  • 小规模企业所得税优惠政策最新2023
  • 会计中包装物计入
  • 会计明细账簿包括哪些
  • 已确认为坏账的应收账款,并不意味着企业放弃了
  • 分公司筹备方案
  • 金蝶怎样取消结账
  • 推广费什么公司能开
  • 税种登记要带什么资料?
  • 充值至他人支付账户
  • 增值税发票遗失证明模板
  • linux的sh
  • 微软发布Windows 10正式版 新浪
  • 利息收入和利息费用的区别
  • 分公司是小微企业总公司是一般纳税人,如何做合并报表
  • 支付代账公司费用 怎么写凭证
  • 电脑上fci是什么文件
  • 房产置换流程及费用
  • 塞巴斯蒂安电影 豆瓣
  • taro-ui-vue3
  • 项目筹建期间费用计入什么科目
  • 企业要缴哪些税种
  • 跨区域涉税事项报告表在哪里打印
  • 接受投资收到的现金计入
  • windowsserver2016激活密钥
  • scp命令 基于SSH协议远程复制文件
  • js删除
  • 取得短期借款会计分录
  • 上市公司发行股票会计分录
  • 交上年企业所得税多少
  • 结转入库材料计什么科目
  • 网络编程知识
  • 跨年认证原材料是什么
  • 吸收合并需要编制
  • 售后更换零件的申请
  • 赠送的商品如何入账
  • 财务软件无形资产有哪些
  • 物业费是否需要物价局备案
  • 改制后的企业
  • sqlserver数据导出导入脚本
  • windows7怎么说
  • window10怎么设置蓝牙
  • xp系统怎么取消用户登录
  • 远程桌面安装
  • WIN10系统如何彻底永久关闭自动更新?建议收藏!
  • xp系统的存储在哪里
  • ubuntu14打开终端
  • linux常用的几种压缩工具
  • opensuse安装显卡驱动
  • linux安装gdb命令
  • win10应用商店更新软件更新不了
  • 微软官方解决升级问题
  • win10一年更新几次
  • Unity3D游戏开发pdf
  • opengl 模型视图矩阵
  • Linux修改tomcat默认端口号8080
  • 用python写网页
  • 基于豆瓣电影数据linux
  • android中的webview
  • jquery上下移动
  • node.js使用教程
  • 安卓端测试
  • js register
  • 开具负数发票(专用发票)流程?
  • 河南国税局变更法人流程
  • 如何践行中国精神论文
  • 中加税务信息互换执行
  • 铜梁在重庆主城哪个方向
  • 河南省公安厅热线电话
  • 贵州税务开票系统登录
  • 电子保险怎么查询车船税
  • 代扣代缴企业所得税手续费
  • 中国税务总局贵州省税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设