位置: 编程技术 - 正文

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电子版
  • 车船税和保险在一起怎么报销
  • 季末资产总额的计算
  • 租入厂房改建折旧年限
  • 应付职工薪酬的计税基础
  • 没有ca证书怎么连接wifi加密设备
  • 存货营业外支出包括哪些
  • 小规模纳税人进材料怎么做账
  • 预收账款核算内容是什么
  • 未及时转固
  • 行政单位发放的政府补贴款
  • 自开租赁费发票税率是多少?
  • 饭店取得的烟酒是什么
  • 工会发放慰问品总金额超过多少需要比价
  • 外币折算差额计入什么科目
  • 银行承兑汇票企业账户没钱
  • 小微企业应纳税所得额不超过100万
  • 本年应交增值税与销进项税额
  • 小微企业增值税优惠政策最新2022
  • 管理费是否需合计
  • 分公司可以向总公司缴纳管理费吗
  • linux怎么增加磁盘空间
  • 进口的固定资产包括哪些
  • ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法 原创
  • 小规模纳税人差额征税
  • 企业发生的哪些费用可以结转
  • 持有至到期投资在资产负债表怎么填
  • 企业缴纳职工社保政策
  • 企业出售房产土地增值税怎么计算
  • 投资性房地产转为存货
  • 跨月未认证的发票可以作废吗
  • siri怎么重置主人声音ios13
  • pytorch1.5
  • laravel enum
  • 应收账款科目有哪些类别
  • Linux Howtos: C/C++ > Sockets Tutorial
  • 《开具红字增值税专用发票信息表》纸质
  • 可供出售金融资产新准则叫什么
  • java默认访问权限修饰符
  • mysql可以存什么
  • 支付宝支付高速公路发票怎么打印
  • 百旺连接服务器失败,是否使用离线文件进行更新
  • erp用友u8操作教程
  • sql查询服务器硬件信息
  • 购买性支出和转移性支出都计入GDP
  • 小规模没收入怎么报税
  • 五险一金没有金
  • 差旅费记入应付职工薪酬吗
  • 固定资产抵债交不交增值税
  • 费用减少利润减少的情况
  • 房租费会计分录
  • 年度所得税汇算清缴报告在哪打印
  • 预付电费收到发票报销单怎么写
  • 海关对旧设备进口规定
  • 什么是非关联方账户
  • 存储过程 decode
  • linux中yum的使用
  • 微软9月补丁
  • xp window
  • 不接入局域网更新
  • unix系统什么样子
  • win7 mysql
  • linux禁止ping的命令
  • xp启用windows功能
  • excel实现多选
  • cocos2dx android游戏防破解总结
  • div+css布局的步骤
  • unityc#打不开
  • 老生常谈的错别字
  • 数组observer
  • css中列表样式
  • 用python学算法
  • jq easyui
  • android错误报告
  • python按行读取文本并输出到excel
  • android的动画有哪些?
  • 车辆保险开增值税吗
  • 杜蕾斯验证真伪扫描
  • 包装种类代码表集装箱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设