摘要:非阻塞下面我们继续看看的第个特性非阻塞异步首先,看看什么是非阻塞呢操作,在程序中我们可以广泛的认为是从数据库读数据从硬盘上读写文件等。当处理完毕后,是怎样知道该完成了这里就要说到第个特性了事件驱动。
非阻塞I/O
下面我们继续看看,nodejs的第2个特性--非阻塞I/O(异步I/O)
首先,看看什么是非阻塞I/O呢?I/O操作,在程序中我们可以广泛的认为是:从数据库读数据、从硬盘上读写文件等。
在传统的单线程阻塞I/O中(如下图),
在程序运行到I/O操作时(从数据库读取数据),由于数据库返回数据需要一定时间,程序在这个时候会暂停下来,等到数据库成功返回数据后,才能继续执行程序2后面的代码;也就是说I/O阻塞了代码的运行,极大地降低了程序的执行效率。
而nodejs采用了非阻塞I/O机制,在程序运行到I/O操作后,程序会立刻跳到程序2去执行,把数据库返回的数据处理程序放到回调函数中,从而提高程序的执行效率。
阻塞模式下,一个线程只能处理一个任务,要提高服务器的吞吐量必须要用到多线程;而非阻塞下,线程永远都在工作(事件栈中有事件的话),换句话说:这个线程的cpu利用率为100%。
当I/O处理完毕后,nodejs是怎样知道该I/O完成了?这里就要说到第3个特性了--事件驱动。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93138.html
摘要:事件驱动在中,当某个执行完毕后,会以事件的形式通知执行操作的线程而线程去执行对应事件的回调函数。为了处理异步,线程必须要有事件循环,不断的检查有没有事件要处理,并依次处理。其实在底层中,有一半的代码,都是在处理事件队列回调函数。 事件驱动 上一节中,我们提到异步I/O;当I/O处理完毕后,nodejs是怎样知道I/O已经完成了呢?又是怎样去处理的呢?答案是:事件驱动(事件循环)机制。 ...
摘要:是什么官网上的定义翻译过来是一个基于引擎的运行环境。使用了一个事件驱动非阻塞式的模型,使其轻量又高效。的包管理器,是全球最大的开源库生态系统。的特点非常重要单线程事件驱动事件循环非阻塞异步所谓的特点,就是是怎样解决服务器高性能的问题。 nodejs是什么 nodejs官网(nodejs.org)上的定义:Node.js® is a JavaScript runtime built on...
摘要:特性单线程说明也许你会问,为什么还不安装还不写代码还不讲模块前面我说过,不会一来就。另外,单线程中,操作系统没有创建销毁线程的时间开销。单线程缺点如果有用户造成线程崩溃,那个整个系统都崩溃了。 nodejs特性1--单线程 说明:也许你会问,为什么还不安装nodejs?还不写代码?还不讲模块?前面我说过,不会一来就hello world。而是会先跟大家讲讲nodejs的特点,只有大家明...
摘要:异步和事件驱动注本文是对众多博客的学习和总结,可能存在理解错误。接触有两个月,对的两大特性一直有点模糊,即异步和事件驱动。 nodejs 异步I/O和事件驱动 注:本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。 接触nodejs有两个月,对nodejs的两大特性一直有点模糊,即异步IO和事件驱动。通过对《深入浅出nodejs》和几篇博客的阅...
摘要:适合做什么我们学习完一门新的技术,我们要知道它适用于什么场景。可以说是,极客追求极致性能的产物,缺少服务器健壮性的考虑。不建议使用在追求稳定的业务上,如银行证券电信系统等。还有非常适合更配合,开发长连接的实时业务。 nodejs适合做什么 我们学习完一门新的技术,我们要知道它适用于什么场景。 nodejs可以说是,极客追求极致性能的产物,缺少服务器健壮性的考虑。不建议使用在追求稳定的业...
阅读 611·2021-11-25 09:43
阅读 1612·2021-11-18 10:02
阅读 987·2021-10-15 09:39
阅读 1849·2021-10-12 10:18
阅读 2086·2021-09-22 15:43
阅读 717·2021-09-22 15:10
阅读 2056·2019-08-30 15:53
阅读 913·2019-08-30 13:00