浅谈并行与并发

1、示例:

  顺序执行:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。

  并发:你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。

  并行:你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。此处注意理解:是同时吃,同时说,要真严格的说的话,需要2张嘴才是并行。

2、理解: 

  (1)并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

  (2)并行是在不同实体上的多个事件;并发是在同一实体上的多个事件。

  (3)并发:不同的代码块交替执行;并行:不同的代码块同时执行。

3、总结:

  在并发程序中可以同时拥有两个或者多个线程。这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的每个线程都处于执行过程中的某个状态。

  如果程序能够并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。

  顾名思义,并发强调的是一起出发,并行强调的是一起执行。并发的反义是顺序,并行的反义是串行。并发并行并不是互斥概念,只不过并发强调任务的抽象调度,并行强调任务的实际执行

原文地址:https://www.cnblogs.com/stupid-chan/p/10003954.html