位置: 编程技术 - 正文

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

  • 高新技术企业产品是什么意思
  • 酒店物业费收取标准2019
  • 借条时间到了怎么续
  • 游戏公司收入确认方法
  • 劳务费属于印花税范围吗
  • 金税盘没有及时清卡怎么办
  • 销售毛利率算法
  • 软件企业即征即退账务处理
  • 商家促销怎么做
  • 汽车按揭费用收合法吗?
  • 电子承兑汇票付款流程
  • 费用退回现金如何入账
  • 企业住房维修基金怎么交
  • 公司社保退回会退钱吗
  • 银行汇票的概念
  • 公司租房可以入公积金吗
  • 结转与结余
  • 商品盘点溢余短缺的核算方法有哪些?
  • macbook怎么压缩视频大小
  • 新笔记本怎么激活windows11
  • 其他应付款不用付了会计分录
  • 公司购买的机票赔偿可以退公司嘛
  • sxgdsenu.exe - sxgdsenu是什么进程 有什么用
  • 如何找回windows密钥
  • 把桌面文件放到虚拟机
  • 重置组策略命令
  • 360安全路由器怎么重启
  • PHP:pg_prepare()的用法_PostgreSQL函数
  • 马瑙斯市
  • PHP:ob_iconv_handler()的用法_iconv函数
  • 阿查法拉亚盆地 钓鱼
  • php多线程curl
  • 财务费用是一种期间费用,按期归集
  • php分页页码动态的实现
  • 税控盘和金税盘的功能一样吗
  • 企业缴纳残保金规定
  • 实际出资大于注册资金
  • matlab中自由变量
  • 使用筷子就餐会不会传染乙肝病毒
  • GANs系列:CGAN(条件GAN)原理简介以及项目代码实现
  • wait等待的用法
  • 魔改是啥
  • 企业所得税本期已预交怎么算
  • 董事会会费应计什么科目
  • 金税盘税局端系统响应错误怎么解决
  • wordpress隐藏内容付费可见
  • rbac权限管理设计
  • 企业金融资产包括银行存款吗
  • 不能防止sql注入
  • 伤残鉴定中心流程
  • 用友t3建账行业性质怎么选
  • 去年的分红奖金是多少
  • 一般纳税人福利费
  • 试生产期间的收入如何做账
  • 培训费开票属于劳务费吗
  • 个人承包工程如何缴纳税款
  • 建设工程施工管理
  • 单位员工购买本地保险
  • 一个查看明日方舟的网站
  • windows 配置
  • win8.1补丁包
  • win8系统安装的软件在哪里
  • 预装win10
  • win8蓝屏解决方法
  • directx device
  • mkcool是什么文件
  • win7旗舰版如何禁止更新
  • win7系统使用ituns设置iphone铃声图文教程
  • 如何解决windows蓝屏问题
  • js中script标签的作用
  • html用法
  • python安装numpy和matplotlib
  • awk统计文件大小
  • easyui怎么用
  • js获取当前浏览器版本
  • 增值税纳税申报操作流程
  • 苏宁易购的联系电话
  • 重庆电子税务局app下载
  • 金税盘的操作步骤
  • 威海个人社保余额查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设