位置: 编程技术 - 正文

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

  • 小规模缴纳企业所得税会计分录
  • 增值税专用发票几个点
  • 浅谈报关单填制的常见错误
  • 产品分成方式取得收入什么意思举例
  • 外出经营是什么意思
  • 印花税资本金项目如何缴纳
  • 企业所得税计算公式
  • 保险公司车险理赔款如何入账
  • 房产税从租和从价
  • 8.会计核算方法具体包括哪些内容?
  • 发放代扣代缴个人所得税分录
  • 预缴增值税可以在电子税务局操作吗
  • 工程造价超出职称怎么办
  • 完工绿化苗木怎样结转成本?
  • 企业收到免税发票后怎么开票
  • 政府拨入企业的资金怎么入账
  • 房地产未确认收入情况说明
  • 2020年餐饮业销售额
  • 建筑企业在工程所在地全额征收
  • 代扣代缴个人所得税手续费是否缴纳增值税
  • 出口佣金可以在企业所得税前扣除吗
  • 税务机关代开的普通发票上无需加盖收款方的印章
  • 加油卡预付卡销户怎么办
  • 固定资产折旧从入账时间算还是购入时间算
  • 事业单位固定资产管理办法
  • 外省工程需要什么手续
  • 确认国债利息收入的依据
  • 净利润怎么计入所有者权益
  • 通行费发票可以抵扣吗
  • 电脑主板bios设置
  • 企业转让房产所得税税率
  • Laravle eloquent 多对多模型关联实例详解
  • 应收票据与应付票据的使用与哪种银行结算方式有关
  • php新手入门教程
  • php 函数返回值
  • vue 首页
  • 卡特迈国家公园熊吃人
  • 完成认证后开具什么证明
  • 企业汇算清缴发现之前收入记多了可以调整吗
  • 建筑企业安装水电过程中很难发现的潜在问题
  • 工业 智能
  • sdiff命令 以并排方式合并文件之间的差异
  • 如何在织梦中设置图片加文字
  • 定额发票和增值税发票
  • 企业日常费用支出明细表
  • 核定征收需要申报吗
  • 工资表社保表格怎么算
  • element-ui tree 异步树实现勾选自动展开、指定展开、指定勾选
  • python repeat函数
  • sql server打开方式
  • 纸质承兑上的印花是什么
  • 企业应纳税总额怎么算
  • 生产性企业账务处理
  • 小规模公司累计增值税
  • 生产出口退税企业有哪些
  • 财政非税收入支付平台
  • 营改增后建筑业分公司账务
  • 商业承兑过期后可以退回吗
  • 有形资产负债率多少合适
  • 应用《企业会计》的论文
  • 会计往来账怎么用excel做更快
  • mysql注入语句
  • 调整后视镜
  • fedora32
  • freebsd怎么安装
  • mac的vmware
  • windows8.1显卡驱动
  • win10专业版怎么调屏幕亮度
  • win10新版磁贴
  • JavaScript程序设计形考答案
  • perl split用法
  • scrapy爬虫教程
  • OnApplicationFocus
  • android 基础
  • python里的迭代器
  • unity协程的工作原理
  • node.js中express-session配置项详解
  • android studio i使用
  • 常州车辆过户手续办理
  • 土地增值税旧房转让计算方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设