位置: 编程技术 - 正文

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

  • 税盘服务费抵扣增值税
  • 全国增值税发票服务平台
  • 税金及附加都包含什么
  • 资金账簿印花税每年都要交吗?
  • 课税为什么叫课税
  • 企业所得税营业收入和增值税销售收入
  • 网银转账往来款
  • 公司开户费用都包括哪些
  • 邮政开票税点是什么意思
  • 政府补贴中介合法吗
  • 合同一方按手印另一方没按有效吗
  • 建筑装饰行业会计分录
  • 接受土地使用权作为投资属于什么凭证
  • 进项发票认证多了留抵
  • 员工工资可以计入在建工程吗
  • 企业内部员工稿费
  • 非独立核算的分公司怎么做账
  • 临时人员工资需交税吗
  • 该期已经申报此税种且数据已提交,不能预约扣款
  • 花椒油的税率
  • 专票当月未认证怎么处理
  • 销售方开票不填开户行
  • 建筑行业挂靠什么意思
  • 购货方收到代垫运费的发票怎么做会计分录?
  • 政府采购 汽车
  • 未确认收货可以评价吗
  • 补缴以前年度税款
  • 外籍员工家属入境
  • 进项税额及存货减值
  • 事业单位工会经费会计账务处理办法
  • 股东借钱给公司怎么写借条
  • win7上网提速
  • win10更新kb5006670
  • 免征个人所得税33种情形
  • 支付宝小程序跳回app
  • 北方针叶林的特征有哪些?
  • 倾向得分匹配后怎么进行回归
  • 应交税金会计编码
  • 企业坏账准备提取的方法和提取的比例由国家统一规定
  • 织梦不更新了
  • python的爬虫
  • 对公账户往来款需要归还吗
  • 财务做帐的金额怎么算
  • 同一控制下合并报表恢复留存收益
  • 小规模纳税人免税会计分录
  • 跨年租金如何处理
  • 餐饮费发票可以抵扣进项税吗
  • 股权转让可行性
  • 毛利差怎么计算公式
  • 冲销主营业务收入怎么做分录
  • 应交税费包括哪些科目
  • 污水处理工程内容包括
  • 建筑发票可以一次性抵扣吗
  • 现金收账凭证
  • 利润表中的营业收入怎么算出来的
  • 卖出去的货没有发票怎么给人家解释
  • mysql怎么清理干净
  • win10预览版和正式版区别
  • 如何屏蔽网络?
  • u盘pe安装win7系统
  • macbook2020款改硬盘
  • 如何安装windowsxp
  • messengerd
  • win7还原电脑系统的步骤
  • win10正式版多少钱
  • cocos2dx 4.0
  • typescript尖括号
  • cocos creator rpg
  • js控制鼠标位置
  • Linux文本处理工具的实验总结
  • jQuery实现表格与ckeckbox的全选与单选功能
  • shell脚本检测文件是否存在
  • centos6升级到centos8
  • js合并字符串
  • javascrip
  • 重新加载activity
  • 玉林税务局班子成员
  • 个体户增值税申报比对不符怎么处理
  • 增值税税控开票软件怎么下载
  • 北京地税查询官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设