位置: 编程技术 - 正文

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

  • 采购暂估的处理方式
  • 零税率是指
  • 销售佣金 个税
  • 税法基本原则是什么意思
  • 金税四期的到来意味着什么
  • 10万以内免交的增值税怎么做帐
  • 股票交易费用计算器
  • 申报更正日期改变会导致逾期申报吗
  • 以股抵债的会计分录
  • 资产损失申报方式
  • 个人公寓出租给公司要交税吗?
  • 刷单的费用计入劳务费吗
  • 进项税加计抵扣分录
  • 商品和安装能开什么发票
  • 个人所得税做账怎么做
  • 定率征收怎么申报
  • 购买承兑汇票怎么做账
  • 什么情况下出租人可以解除合同
  • 计提增值税的会计科目
  • php生成唯一标识
  • 讲述人功能怎么关闭
  • 商品购进核算
  • 微软发布windows
  • 施伦贝格尔
  • php imagick
  • 耕地佔用税的缴纳期限
  • 赔付支出有哪些
  • PHP:FrenchToJD()的用法_日历函数
  • 苏格兰高地牛一个萌萌哒的合集
  • 没有收入的情况下可以填成本吗
  • 固定资产一次性扣除后第二年账务处理
  • 联邦学习攻击与防御综述
  • 全连接神经网络是什么意思
  • 赠品视同销售会计分录要如何编制?
  • 建筑公司预收账款财税怎么处理
  • 农业企业所得税是免税的吗
  • 送货运输费用税率
  • 水电费是收据能入账不
  • Python打开文件的代码
  • php5.6.和7.2区别
  • 股权转让主要交什么税费
  • 企业法人个人贷款哪里好贷
  • 财务预算资产负债表如何编制
  • 是不是所有的发票都是一样的
  • 税收种类包括哪几种
  • 配置英文
  • sqlserver有实例吗
  • 教育行业税收优惠政策2022
  • 企业财务费用为负好不好
  • 发票上的印记能去掉吗
  • 未确认融资费用摊销额怎么计算
  • 本月增加无形资产什么时候计提折旧
  • 酒店客人损坏物品不赔偿怎么报警
  • 总公司和分公司企业所得税分配
  • 税务人员如何做好本职工作
  • 汇票本票支票的联系
  • 出纳怎么做账
  • 自动清理河道垃圾船
  • mysql分区是什么意思
  • 组建,加入或退出工会都是基于
  • internetfeatures.exe是什么文件
  • ubuntu kylin 14.04下载 ubuntu优麒麟14.04 lts下载地址
  • Ubuntu Linux 7.04QQ、MSN 安装和使用方法
  • macbook怎样充电
  • win10电脑无法上网
  • msxct.exe - msxct是什么进程 有什么用
  • windows7凭据管理器
  • win7的系统设置
  • u3d怎么导入贴图
  • opengl教程48讲
  • jquery的实现原理
  • unity出现bug
  • node.js原生支持的编码格式
  • linux反弹shell方法
  • jquery点击跳转页面
  • javascript基础教程教材答案
  • js按下回车键时提交
  • 税务举报被泄漏怎么办
  • 员工的生育津贴计入工资总额吗
  • 社保交五百多
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设