区别:并行、并发、同步、异步

个人理解这4个概念是从不同角度看:“多个任务被同时执行” 这件事。

从CPU的角度:并行、并发

从编程模式的角度:同步、异步

1、并行、并发:CPU视角

(1)并行:多个任务真正意义上被同时执行,非多核CPU或者多CPU环境不行,即CPU的每个核同时执行不同的任务。

(2)并发:泛指多个任务被 “同时” 执行,这个 “同时” 可以是人类感觉上的 “同时”(即退化的伪并行),也可以是真正意义上的 “同时”(即真并行,此时是并行)。至于是 人类感觉上的“同时”(伪并行)还是真正的 “同时”(真并行),取决于任务运行的环境:是否有多核CPU或者多CPU。

如果运行环境是单核单CPU,那么显然不可能是 “真并行”,那么OS会通过为各个任务分配CPU时间片的方式,交替执行各个任务,只不过这个交替的速度很快,人类感觉不到这种交替切换,所以就感觉上各个任务似乎也在 “同时” 执行(伪并行,此时是并发)。

2、同步、异步:程序员编程视角

(1)同步:让各个任务依次被执行,各个任务被运行的时间上没有重叠,即上一个任务执行完毕后,才可以执行下一个任务,即同步中没有 “并发” 甚或 “并行” 的概念。

至于多线程时是否可以同步?即有多个任务,每个任务起一个线程,是否仍然可以实现同步?显然是可以的,具体见参考4。

(2)异步:相对于同步,一个任务无需等待上一个任务执行完毕 就可以被执行。这种任务执行编程范式就叫异步。

那么从CPU视角看,异步中多个任务被执行的方式,类似 “同时” 执行了多个任务,即并发。

个人理解与 并发 的区别是:并发强调让任务 “同时” 执行(不论是真同时,还是感觉上同时),但是异步不强调 “同时”。例如,正在被CPU执行的任务一可以被任务二打断,在并发环境下,任务二的时间片用完后,就必须将CPU交给任务一了,任务一继续被执行,任务一时间片用完后,就需要把CPU交给任务二了,这样快速交替下去,让人感觉,这两个任务似乎在同时执行;而在异步下,任务二在打断任务一后,可以一直被执行下去,不用考虑是否做到 让人类觉得 “同时” 在执行两个任务,即任务二可以一直执行下去,当然是否需要让任务二一直执行下去,视业务需要。

参考:

1、一个视频告诉你“并发、并行、异步、同步”的区别_哔哩哔哩_bilibili

2、操作系统中的并行、并发、同步、异步等概念 - 知乎 

3、并发、并行、同步、异步的概念_郑*杰的博客-CSDN博客_同步并行 

4、谈谈对并发、并行、同步、异步的理解_hzyangccc的博客-CSDN博客_同步并行

5、并行和并发,同步和异步的区别_昕昕向荣的博客-CSDN博客_同步和并发的区别icon-default.png?t=M3K6https://blog.csdn.net/weixin_42736024/article/details/84889206?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2 

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值