首页 > 代码库 > node.js学习一——什么是node.js

node.js学习一——什么是node.js

定义:node.js是运行在服务器端的运用了谷歌v8引擎的javascript运行平台

特点:1. 异步式I/O(非阻塞式I/O) 2. 事件驱动

什么是异步式I/O(非阻塞式I/O)?

要了解什么是异步式I/O(非阻塞式I/O),必须要先了解下什么是I/O,什么阻塞, 什么是同步式I/O(阻塞式I/O)。

I/O的定义: 线程在执行磁盘读写或者是网络通信时统称为I/O操作。

阻塞定义: 在I/O的过程中由于要耗费的时间比较长,操作系统会剥夺这个线程对CPU的控制权,让线程暂停执行。同时把资源交给其他线程,这样的调度方式叫做阻塞。

阻塞式I/O:在I/O操作完毕时,操作系统将线程的阻塞状态解除,恢复其对CPU的控制权,让他继续执行。这种I/O模式叫做同步式I/O或者阻塞式I/O。

异步式I/O:相对于同步式I/O来说,异步式I/O在处理I/O调度上不会采用阻塞策略,即不会等待I/O完成或者结果返回,而是把I/O的请求发送给操作系统,自己继续往下执行,等到I/O完成之后再以事件的方式通知之前执行I/O操作的线程,

线程会在特定的时候处理事件。为了能够实现能够通知之前I/O操作的线程,线程必须有循环检查是否有新事件机制,一旦有新事件就要处理。