资讯专栏INFORMATION COLUMN

快速学习nodejs系列:六、nodejs特性3--事件驱动

ashe / 344人阅读

摘要:事件驱动在中,当某个执行完毕后,会以事件的形式通知执行操作的线程而线程去执行对应事件的回调函数。为了处理异步,线程必须要有事件循环,不断的检查有没有事件要处理,并依次处理。其实在底层中,有一半的代码,都是在处理事件队列回调函数。

事件驱动

上一节中,我们提到异步I/O;当I/O处理完毕后,nodejs是怎样知道I/O已经完成了呢?又是怎样去处理的呢?答案是:事件驱动(事件循环)机制。

事件驱动:
在nodejs中,当某个I/O执行完毕后,会以事件的形式通知执行I/O操作的线程;而线程去执行对应事件的回调函数。为了处理异步I/O,nodejs线程必须要有事件循环,不断的检查有没有事件要处理,并依次处理。

对于nodejs来说,不论是建立新的请求、提交、获取数据等,一切的行为都会触发相应的事件。在同一个时刻,只能执行一个事件的回调函数,但是在执行事件回调的途中,是可以去处理其他事件的(如有新连接),然后返回继续执行原事件函数,这样的处理机制,我们称为事件循环机制。其实在nodejs底层中,有一半的c++代码,都是在处理事件队列、回调函数。

好的,到这里我们已经学完了nodejs的3个特性!我们来做个总结
nodejs的特性有3个:单线程、non-blocking I/O(非阻塞I/O)、event-driven(事件驱动);其实这3个特性都是在说同一件事。我们可以这样理解:nodejs使用的是单线程,如果多个任务(I/O)同时过来了,某个I/O是阻塞的话,那其他任务都会在等,这样性能就不会高了;这时就要异步I/O了,所有的I/O操作都要异步;这样异步I/O就好了吗?还没完,如果正在执行A任务,这时B的I/O回调了,怎么办?这就要事件循环了,不管是新用户连接,还是老用户I/O完成,都以事件的形式加入事件循环中,等待nodejs调度。(nodejs可以想象成是一个非常非常抠门的老板,只请一个服务员做所有的事情,但工作效率比请多个人还要高)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93165.html

相关文章

  • 快速学习nodejs系列:三、nodejs是什么

    摘要:是什么官网上的定义翻译过来是一个基于引擎的运行环境。使用了一个事件驱动非阻塞式的模型,使其轻量又高效。的包管理器,是全球最大的开源库生态系统。的特点非常重要单线程事件驱动事件循环非阻塞异步所谓的特点,就是是怎样解决服务器高性能的问题。 nodejs是什么 nodejs官网(nodejs.org)上的定义:Node.js® is a JavaScript runtime built on...

    zilu 评论0 收藏0
  • 快速学习nodejs系列:五、nodejs特性2--非阻塞I/O

    摘要:非阻塞下面我们继续看看的第个特性非阻塞异步首先,看看什么是非阻塞呢操作,在程序中我们可以广泛的认为是从数据库读数据从硬盘上读写文件等。当处理完毕后,是怎样知道该完成了这里就要说到第个特性了事件驱动。 非阻塞I/O 下面我们继续看看,nodejs的第2个特性--非阻塞I/O(异步I/O) 首先,看看什么是非阻塞I/O呢?I/O操作,在程序中我们可以广泛的认为是:从数据库读数据、从硬盘上读...

    Baaaan 评论0 收藏0
  • 快速学习nodejs系列:四、nodejs特性1--单线程

    摘要:特性单线程说明也许你会问,为什么还不安装还不写代码还不讲模块前面我说过,不会一来就。另外,单线程中,操作系统没有创建销毁线程的时间开销。单线程缺点如果有用户造成线程崩溃,那个整个系统都崩溃了。 nodejs特性1--单线程 说明:也许你会问,为什么还不安装nodejs?还不写代码?还不讲模块?前面我说过,不会一来就hello world。而是会先跟大家讲讲nodejs的特点,只有大家明...

    cgspine 评论0 收藏0
  • 快速学习nodejs系列:二、nodejs诞生

    摘要:简介的诞生学习一门技术之前,有必要了解该技术是如何诞生的是之父于年发布的。其在纽约罗切斯特大学数学系读博,研究一些分型分类的研究。年月,把项目定义为同年月,向外界宣布这个项目年底,在柏林的大会上进行的演讲,之后开始流行 nodejs简介 1.nodejs的诞生 学习一门技术之前,有必要了解该技术是如何诞生的? nodejs是ryan dahl(nodejs 之父)于2009年发布的。 ...

    tangr206 评论0 收藏0
  • 双十二大前端工程师读书清单

    摘要:本文最早为双十一而作,原标题双大前端工程师读书清单,以付费的形式发布在上。发布完本次预告后,捕捉到了一个友善的吐槽读书清单也要收费。这本书便从的异步编程讲起,帮助我们设计快速响应的网络应用,而非简单的页面。 本文最早为双十一而作,原标题双 11 大前端工程师读书清单,以付费的形式发布在 GitChat 上。发布之后在读者圈群聊中和读者进行了深入的交流,现免费分享到这里,不足之处欢迎指教...

    happen 评论0 收藏0

发表评论

0条评论

ashe

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<