位置: 编程技术 - 正文

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

  • 劳务服务有什么
  • 专利年费入什么会计科目
  • 增值税税控系统专用设备
  • 独资企业要交税吗
  • 企业所得税季度预缴怎么计算
  • 差旅费报销怎么做账
  • 长期股权投资转入持有待售资产
  • 税务局查账一般需要几天
  • 违约金收入计入应纳税所得额吗
  • 非公司私营企业属于什么类型
  • 普通发票开票步骤
  • 绿化费用明细
  • 用人单位有残疾补贴吗
  • 纳税额和纳税总额
  • 小规模建筑公司可以开劳务发票吗
  • 进口关税和增值税在哪里交
  • 安全的无线连接软件
  • linux怎么改桌面背景
  • 合同印花税会计分录
  • 长期待摊费用2021
  • 企业所得税征收标准
  • linux命令用法
  • php教程100
  • 应交消费税会计分录怎么做
  • 安保服务差额征税如何开票
  • 财产损失立案
  • 二手房过户需要哪些手续和费用2023
  • 斯科默岛白玉草丛中的海鹦,威尔士彭布罗克郡 (© Ross Hoddinott/Minden Pictures)
  • 创建自定义对象主要哪几种方法,并写出基本语法结构?
  • 收入汇缴账户可以冻结吗
  • 找潜水员
  • sql实现mysql的分页功能
  • php操作json文件
  • 补差价如何做账
  • php服务器地址怎么填
  • phpcms怎么用
  • 社保在会计上的分类
  • 收缴违约金
  • 大额医疗保险计入什么科目
  • 企业低值易耗品的摊销方法有
  • 劳务报酬所得与个人经营所得的区别
  • 企业收到投资款应贷记什么账户
  • 汽车买卖中介
  • 企业找审计是为了什么
  • 小规模纳税人在哪里查
  • 应收业务处理流程
  • 清算所得税计税基础
  • 施工一个月多少钱
  • 股权转让的实质
  • 营改增后预交营业税怎么处理
  • 计提社保公积金的账务处理
  • 注册资金没有到位
  • 对公账户分为几类
  • 销售商品未开票
  • 理财产品产生的收益会成为本金吗为什么
  • 用友t3财务通普及版如何开下年账
  • 税控设备设置在哪儿
  • 苗木设计方案
  • 收到发票税点计入什么科目
  • sqlserver索引的作用
  • 分页存储过程的实现
  • 电脑上的win8键盘怎么打开
  • windows 2000 server sp4 下载
  • centos7 pptp搭建
  • 双屏windows
  • Cpqset.exe是什么系统进程 Cpqset有啥作用
  • linux 使用技巧
  • 如何使用升级助力器
  • win8.1怎么用
  • 导演都有什么分类
  • jquery设计模式
  • jquery选择器实例
  • jQuery progressbar通过Ajax请求实现后台进度实时功能
  • 轮播怎么实现
  • jq filter过滤
  • 详解Javascript事件驱动编程
  • 甘肃国家税务发票查询
  • 江苏常州税务局电话人工服务电话
  • 江苏国税电子税务局网上申报流程
  • 增值税借方有余额怎么调整
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设