nodejs第六课 异步I /O特性

Posted Javascript设计模式

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs第六课 异步I /O特性相关的知识,希望对你有一定的参考价值。

我们将研究“黄焖鸡米饭”的经营策略,两个厨子和一个小姑娘,十张桌子,一个服务员取

照顾跟多客人,当用户访问3000端口的时候,我们把哈哈显示在网页中。

如何呈现

大家看好了这就是黄焖鸡米饭,在招呼172的时候,已经给111上好了菜

133来了,在招呼133的时候,已经把66 78 211 222读取完毕,设置133还没读取完毕,就又来了一次,就是说这个服务员不会死等着,等给你上完菜,交替进行的,

只要I/O越多,NOdejs宏观上越并行,nodejs怕的是计算,但是如果来了一个人来给小姑凉聊天,这个时候就不并行,

Node.js适合开发i/O多的业务,而不适合计算任务繁重的业务,那把计算的是给放给客户端的js不就可以了吗,这话很有道理,

php也是多线程,cpu经常在等待I/O结束, 当并行极大的时候,cpu理论上的计算能力是100%;

因为nodejs想在破的机器上也能高效运行,所以剑走偏锋采用了单线程的模式。

例如,当在访问数据库取得数据的时候,需要一段较长的事件,在传统的处理机制中,在执行了访问数据库代码之后,整个线程将都暂停下来,等待数据库返回结果,才能执行后面的代码,也就是说,I/O阻塞了代码的执行,极大的降低了程序执行效率。

由于node。js中采用了非阻塞I/O机制,因此在执行了访问数据短裤代码之后,将立即实行后面的代码。

当某个I/o执行完毕时,将以事件的形式通知执行I/O的线性,线程执行这个时间的回调函数,为了处理异步i/o,线程必须有事件循环,不断的检查有没有未处理的事件,一次予以处理。

3.3事件驱动

事件驱动是nodejs的底层机制,我们只需要了解nodeJS不会“上错菜”,的原因就是事件驱动,有一个事件环,那桌是个回民,你上鱼香肉丝,不会上错菜就是因为有一个东西事件驱动,

 

nodejs会把每个人的请求的事件,堆栈,以后再处理

 

 

以上是关于nodejs第六课 异步I /O特性的主要内容,如果未能解决你的问题,请参考以下文章

为啥说nodejs是异步非阻塞

NodeJS中的异步I/O事件驱动

读书笔记《深入浅出nodejs》第三章 异步I/O

nodejs 单线程 高并发

如何优雅的处理Nodejs中的异步回调

nodejs 单线程 高并发