还是先看看csapp上的解释:并发(concurrency)是指一个通用上的概念,指一个同时具有多个活动的系统;并行(parallelism)指的是用并发使一个系统运行得更快。
百度的解释:并发, 在
操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个
处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。也就是实际上,并发使指的在逻辑上,宏观上,一个计算机能够同时执行多个任务多个程序,但是微观上看,在同一个时刻,只有一个程序在运行,但是由于处理器速度非常快的在几个程序来回切换,让我们觉得是好几个程序同时在执行。
而并行则是真正的让计算机在物理上同时执行多个活动。
举个例子,妈妈(cpu)在上午10点后开始做家务(程序),首先是收拾房间,收拾完房间后,开始洗衣服,洗完衣服后开始做午饭,那么到中午12点,妈妈一共做了3件事情(程序),从宏观上看,妈妈在一个上午的时间同时做了3个家务,但是实际上这三件事并不是同时做的。而如果妈妈这么选择做家务:在收拾房间的同时,把衣服扔到洗衣机里让洗衣机洗着,同时又让电饭锅蒸着米饭,等妈妈收拾完房间的同时衣服也洗好了,饭也做熟了。三件事情等于是真正上的同时执行的,这就是并行。很明显我们会发现,并行的速度要远远快于并发。
当然并发和并行的具体实现远远很复杂,这只是先从概念上区分开并发和并行。