【OS】同步异步/阻塞非阻塞、并发并行串行的区分

参考地址:https://blog.csdn.net/qq_23282479/article/details/80424946

 


 理解①

同步异步是对于被调用者的说明;阻塞非阻塞是对于调用者的说明

被调用者

同步的话就是在没有得到结果之前,该调用就不会返回。但是一旦返回结果,就得到返回值了;

异步的话则相反,调用者一调用之后就直接返回了,所以没有返回结果。而被调用者是通过状态、通知或者回调函数来处理这个调用

 

调用者

阻塞的话就是调用者在调用这个方法之后不继续执行,直到这个调用结果出来

非阻塞的话就是调用者在调用这个方法之后继续执行,不管此调用

 

理解②

同步异步是一种线程的操作方式;阻塞非阻塞是线程的状态

同步异步和阻塞非阻塞,不相同也不冲突

 

同步:主线程自己解决这个函数,主线程可以以(非阻塞/阻塞)状态去获取这个线程执行这个函数得到的值

 

异步把这个函数交给别人来处理,主线程可以以(非阻塞/阻塞)状态去获取这个线程执行这个函数得到的值

 

阻塞:主线程等待解决完这个函数才去做别的事

 

非阻塞:如果主线程现在做不了这件事或者正在被新开的线程执行,可以去做别的事

 

别人问我问题(主线程调用函数)

 

非阻塞

阻塞

同步

我来解决这个问题

如果我还不能开始解决(没获得锁),我就先去做别的事情

我来解决这个问题

等这个问题解决完才去做别的事情

异步

我叫一个新线程解决这个问题

然后我就去做别的事了,做完了通知我

我叫一个新线程解决这个问题

等这个问题解决才去做别的事情


并发并行串行都是对多任务的不同执行方式

实现任务 --> 调用函数

普通解释:
并发:交替做不同事情的能力
并行:同时做不同事情的能力
专业术语:
并发:不同的代码块交替执行
并行:不同的代码块同时执行

执行吃饭任务的时候来了一个打电话任务

  • 串行执行:执行完吃饭才去打电话
  • 并行执行:可以停下吃饭去打电话,之后再吃饭
  • 并发执行:可以一边吃饭 一边打电话
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值