nodejs 非阻塞,
Node.js中的非阻塞I/O是什么?本文通过实例带你了解Node.js中的非阻塞I/O希望对你有帮助!
node.js速度课程简介:进入学习
I/O是输入/输出。一个系统的阻塞I/O和非阻塞I/O的区别在于,我们都是系统的接收输入,在到输出期间,能不能接收其他输入
举个栗子
去食堂吃饭都要排队。
我们的流程是:排队-
出去吃:餐厅点菜。
现在我们的流程是:坐下-点餐-等待-开始吃饭。
排队吃饭还是去餐馆点餐
对于点餐的我们来说:
排队吃饭是挡住了I/O餐厅的订单,但没有挡住I/O,继续看最上面一句:
在栗子中,系统=食堂做饭的阿姨或者餐厅的服务员,输入=点餐,输出=上菜(上菜)。
阿姨一次只能做一顿饭——阻塞I/O。
服务员点餐后还可以服务其他客人——非阻塞I/O。
:
其实,这个问题小学老师就教过我们
.你没想到吗?(其实我也没想到~)
在这个过程中,我们用洗衣机洗衣服=输入,干衣服=输出。在洗衣服的过程中,我们可以做别的事情,所以这个属于非阻塞I/O哟。
思考
要了解非阻塞I/O,首先要确定的是什么?
我们需要确保有一个输入/输出系统。考虑在I/O过程中是否可以进行其他I/O。是——非阻塞不能——阻塞
写个栗子
,先创建一个index.js,然后打开我们的前端vs-code,打开终端,执行npm install glob,安装一个glob包,帮助我们更方便的观察I/O是否阻塞。
让我们先来看看阻塞I/O。
首先粘贴代码:index.js
const glob=require( glob );
var结果=null
console.time(glob )
result=glob . sync(_ _ dirname /* */* )
console.timeEnd(glob )
Console.log(result)首先,使用require来介绍我们的glob包。接下来,使用glob.sync打印一个目录。打印结果时,使用time/timeEnd记录时间,并查看node执行此操作需要多长时间。
在终端中输入node index.js直接运行这个文件。
看第一行。在我的电脑上执行需要20.93毫秒,对于一个服务器来说不算小。
看看非阻塞I/O。
直接装载代码:
const glob=require( glob );
var结果=null
console.time(glob )
glob(__dirname /**/* ,function(err,res){
结果=res
//console.log(结果)
console.log(得到结果);
})
console.timeEnd(glob )
Console.log(今天滚动了吗?)这次我们用一个回调函数来操作,因为打印出来的结果行太多,所以用打印出来的 got result 来代替,计时完成后执行一个print语句操作。让我们来看看结果:
首先是我们的时间:3.258ms,相比之前的时间20.93,简直少了太多。之后就是我们的输出语句,最后我们打印出想要的运算结果。也就是说,它在输入和输出之间进行其他运算,对结果没有影响,花费的时间也少很多!
结论
我的理解:非阻塞I/O让我们减少了很多等待的时间,在等待的时间里,我们还可以进行一些其他的操作(欢迎大家的建议!)
有关编程的更多信息,请访问:编程入门!即Node.js中的非阻塞I/O是什么?通过实例了解!更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。