Node.js——阻塞与非阻塞IO

事件轮询(是Node IO的基础核心)

指Node会先注册事件,随后不停地询问内核这些事件是否已经分发。当事件分发时,对应的回调函数就会被触发,如果事件没有分发时,继续执行之后的代码,直至该事件分发时则执行相应的回调函数。

例:
		console.log('hello')
		setTimeout(function () {
			console.log('world')
			}, 5000)
		console.log('hi')

		//输出语句为  hello hi world

Node并发实现也实现了事件轮询

单线程

即当一个函数执行时,不会有第二个函数也再执行。

高并发实现

当V8首次调用一个函数时,会创建一个众所周知的调用堆栈,或称为执行堆栈。即一个函数在调用时,又调用了另一个函数,V8就会把它添加到调用堆栈。

例如:

			function a () {
				b();
			}
			function b () {}

此处的调用堆栈则为 a b
HTTP服务器中

			http.createServer(function () {
				a();
			});
			function a () {
				b()
			};
			function b () {};
			Http请求到达服务器,Node会分发一个通知,调用堆栈为 a b

堆栈追踪

指在JS中,当错误发生时,在错误信息中可以看到一系列函数的调用。

小结

在开发当中应尽量避免使用同步IO,学会使用非阻塞IO事件轮询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值