同步与异步、阻塞与非阻塞

我对于异步这个词印象非常深刻,因为跟他一起出现的英文名词 Asynchronous 我每次都不知道怎么念,所以见一次百度一次,但是下一次见又不会念了所以这个词深深的映在了我的脑海,今天学多线程的时候偶然又接触到了这个词,秉着不懂就问,不会就学的原则,那就把这个东西搞清楚把。


设想一下这个情景,你列了个购物清单(A,B,C,D)去商店买东西,你向老板询店问有没有你想要的A(I/O操作),于是老板去仓库查看,这个时候假如你在前台等待老板查询结果回来那么这种询问等待的方式为同步,此时你相当于被挂起,是处于阻塞状态的,而如果你没有在前台等待老板的查询而是接着进店逛看有没有你想要的B,C,D,老板查询回来会主动过来找你告诉你查询结果,那么这种查询不等待的方式为异步,这个时候你是非阻塞的。有了这个例子,那么相关概念就很好理解了。显然,异步的方式效率更高。

同步:发出一个调用,并等待调用结果。
异步:发出一个调用,该调用不等待调用的结果直接返回,当结果出来时,被调用对象会同过某种方式来通知调用者返回值是多少。

同步与异步强调的是消息通信机制,而阻塞与非阻塞强调的是在等待调用结果时的状态。

线程.join()其实是令所有先完成的线程处于阻塞状态,等到所有的线程都完成了,主线程才会继续向下执行代码。

这也可以理解为什么因为有GIL存在的Python多线程适合与I/O密集型应用了。当进入一个IO操作时,可以释放当前的锁,转向下一个IO操作。

记录的虽然简单,但是总算是从0迈向了1.
Asynchronous – A syn chro nous  A sin korol ners 发音分解下,大概会读了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值