并行,并发——超简单的解释

一个例子解决 : 洗衣做饭

假设你需要洗衣服和做饭(两个任务)

  1. 串行 : 先洗衣服,洗完后再做饭。(或者先做饭,做完后再洗衣)
  2. 并行 : 将洗衣盆拿到灶台,左右炒菜做饭,右手搓洗衣服。
  3. 并发 : 一会洗衣,一会做饭,但疾如闪电。

[注] 上述过程,体现了多任务,以人手为操作主体,以<2并行>理解,左手相当于一个CPU,右手相当于一个CPU,两者一起工作

  • 并行是指两个或多个事件在同一时刻执行,由多个CPU执行不同的事件。
  • 并发是指两个或多个事件在同一时间间隔发生(间隔恍如闪电),宏观上来看,是"同时"执行。

    在并发程序中,可以同时拥有两个或者多个线程,这意味着,如果程序在单核处理器上运行,那么这两个线程将交替的换入或者换出内存,这些线程是同时 '存在' --- 即每个线程都处于执行过程中的某一个状态。
    如果程序能够并行执行,那么一定运行在多核处理器核上,此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。

  • 若某个系统支持两个或者多个动作(Action)同时存在,那么此系统是一个并发系统。
  • 若某个系统支持两个或者多个动作(Action)同时执行,那么此系统是一个并行系统。

综上 : "并行" 概念是 "并发" 概念的一个子集,也就是,可以编写一个拥有多个线程或者进程的并发程序,但如果没有多核处理器来执行,那么就不能以并行方式来执行代码。

图解

  1. 并发实际上是一个物理CPU(也可以是多个CPU)在若干道程序之间多路复用,并发行是对有限物理资源强制行使多用户共享以提高效率;
    并发,是在同一个CPU上同时(不是真正的同时,宏观上的同时,因为对于机器而言,CPU在多道程序间切换时间很短)

    并发

     

  2. 并行是指两个或以上的动作在同一时刻发生,在多道程序环境下,并行性是多个程同时在不同CPU上执行。
    并行,每个CPU运行一个程序

    并行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值