Node之阻塞与非阻塞IO

1.阻塞IO代码示例

echo 'hello';
sleep(5000);
echo 'world';


说明:php中,sleep会阻塞当前所在线程(每当apache接收到一一个请求时都会产生一个php线程去处理当前请求,而node则是采用一个长期运行的进程)

运行结果:

              hello 5s后 world


2.非阻塞IO代码示例

console.log('hello');
setTimeout(function() {
		console.log('world');
	}, 5000);
console.log('bye');
说明:node采用事件轮询机制
运行结果:

hello bye 5s后 world


3.什么是事件轮询?

   先注册事件,然后不停的轮询该事件是否已经分发。当事件分发时,对应的回调函数会被触发,然后继续执行下去;未被分发时,先直接执行后面的代码,直到有新事件被触发时再去执行回调函数


4.node并发的实现

采用事件轮询机制,触发一个和文件描述符的通知。当node从浏览器接收到http请求后,底层的tcp连接会分配一个文件描述符,如果浏览器发送数据,则该文件描述符会收到通知,然后触发javascript回调函数


5.node是单进程的

 node采用v8引擎,执行函数调用堆栈非常的快,所以可以进行非阻塞IO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值