个人对同步异步,阻塞非阻塞的理解

以下内容纯属个人理解,如有错误,欢迎指出讨论…

我们经常把同步异步,阻塞非阻塞,当作单独的两个块来理解,就单独针对同步异步理解起来不难,单独针对阻塞非阻塞理解起来似乎也不难…但是两个块放到一起理解似乎总有点含糊不清的感觉…然后有人得出”同步就阻塞,异步就非阻塞”的错误观念…

说个我觉得比较好理解但是难登大雅之堂的例子:
同步:喝一杯水,坐在马桶上等尿…
异步:喝一杯水,出去浪了,等膀胱通知大脑想尿尿了再尿…

(同步)阻塞:专心致志的坐在马桶上,将自己挂起什么事也不干,就做安心等尿这一件事
(同步)非阻塞:坐在马桶上等尿,但是还可以玩玩手机看看报,然后过段时间就自我感觉下有没有尿…

有人看的这里产生疑惑了,那个”(同步)非阻塞”和”异步”不是一回事吗?都是能干别的事情,大家注意:
“异步”自身是无需关注的结果的,就是喝完水之后即使今天不尿明天不尿这辈子都不尿也无所谓,该干嘛就干嘛去,自然等膀胱通知就行了,通知有尿了再去尿…
而”(同步)阻塞或非阻塞”我说一直坐在马桶上是表示自己时刻都在关注这个结果的,必须得有个结果(阻塞死等结果,非阻塞轮询查看),即要么就尿出来,要么确定”这辈子都尿不出来了”,总之得有这个等尿的结果出现…

又有人问了,阻塞和非阻塞都是针对同步吗?那异步有阻塞和非阻塞吗?
异步给人的印象一直是非阻塞的…
其实我个人觉得针对什么来说吧,若针对单个线程来说,那么异步的某个线程在一直等待结果的时候也是会出现阻塞的,但是是针对说这个线程阻塞了,只不过”异步的结果”看起来是非阻塞的,因为发起者根本就无须关注这个结果…假设花了1万年等到一个结果,你说它难道没有被阻塞吗?只不过程序本身并不关注花了多久时间,也并不关注是否有结果,有就有,没有就没有…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值