互联网我来了 -- 2. js中"异步/阻塞"等概念的简析

本文简要分析了JavaScript中的异步非阻塞概念,通过买内裤的比喻解释了同步阻塞、同步非阻塞和异步非阻塞的区别。文中详细探讨了JS中的同步阻塞、同步非阻塞和异步非阻塞的执行情况,并指出异步非阻塞在提升程序效率和线程利用上的优势。
摘要由CSDN通过智能技术生成

一、什么是”异步非阻塞式”?

这个名字听起来很恶心难懂,但如果以 买内裤 这件事情来比喻执行程序的话就很容易理解“异步非阻塞式”的涵义了。

例如你是一个CPU的线程,你需要去执行一段 买内裤的程序, 你所需执行的步骤大致如下,

  1. 到一个商店里问老板, 你们店里还有没有nb牌内裤?
  2. 买到内裤,穿上
  3. 去小卖店买点火腿回家喂狗

这时候,你作为一个线程,你可能会遇到几种状况或选择。

  1. 店里面没货了,老板一直不答应你(阻塞你),你也一直等着(同步),第三天有货了才告诉你有了,你赶紧拿到穿上,再去买火腿 – [同步阻塞模式]
  2. 老板马上告诉你“没货了”(不阻塞你),然后你每天去店里问一声,直到有货了赶紧穿上,再去买东西喂狗 – [同步非阻塞]
  3. 你让老板有货了打电话叫你过来取,老板说“好的”(非阻塞),然后你就先去买东西喂狗了,过了两天老板叫你过去,你才拿到内裤并穿上 – [异步非阻塞]
  4. 你让老板有货了打电话叫你过来取, 老板又没答应你(阻塞), 然后你本来打算去先去买火腿的(异步),这时候也没法去了。 – [异步阻塞]

很明显,第三种方法是最聪明,前两种方法都略显效率低下。所以根据我们的理解,

同步或非同步,表明着是否需要将整个流程顺序地完成

阻塞或非阻塞,意味着你调用的函数会不会立刻告诉你结果

二、在js中的阻塞与同异步

你有一个函数和一段程序。

2.1 js中的同步阻塞

// 这是一个阻塞式函数, 将一个文件复制到另一个文件上
function copyBigFile(afile, bfile){
   
    var result = copyFileSync(afile,bfile);
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值