关于Nodejs的单线程、异步IO与事件驱动的理解

       首先,nodejs如今越来越火,我记得有人做过实验,用node和php来做了性能对比(都是做后台的),答案是node是php性能的86倍!

       nodejs最大的特点就是单线程、异步IO、事件驱动。(单线程是因为JS引擎中只有一个线程去解析和执行javascript代码,即主线程

       从接触编程之后,我遇到最震撼的也是最难学就是多线程编程,我在想只有多线程编程才是真理,知道我接触了node,我发现node是单线程的,但是它的性能又是那么的好,这是怎么回事呢,究竟node是如何实现异步的呢?

       上面说了node只有一个主线程,从上到下依次执行任务,但是node还有一些其他线程,比如处理AJAX请求的线程、处理DOM事件的线程、定时器线程、读写文件的线程等。这些线程称为工作线程。

       假如咱们开设了一家奶茶店,由于奶茶运用了独门秘方,每天上门的客人非常多,但是由于咱们刚刚开业,缺少资金,所以只有一个售卖窗口。试想如果所有客人一拥而上,势必会造成拥堵的。这时候,就需要引入一个机制:排队机制。只有客人开始排队之后,才不会发生拥堵的现象。但是呢,新的问题又来了,其中有一个客人,到他买奶茶的时候,他发现自己的钱不知道装在哪个口袋或者包里了,他就翻来覆去的找,找了老半天,这是在后面的客人肯定不愿意了,这就会在成新的问题。然后呢,解决办法显而易见,先让这位找钱的客人去一边找钱,等到他找到钱,在让他重新回到队伍中的第一个,这样就解决了这个问题。

       node就相当于上面所说的奶茶店,因为他是单线程,所以所有任务必须排队依次进行,当遇到特殊任务时(比如文件操作),node就会把这个任务交给工作线程来处理,继续解决下面比较好解决的任务,并且node会循环检查这个特殊任务队列,当这个特殊任务处理结束之后,node就会执行该任务对应的代码(一般都是回调函数)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值