转自:https://blog.csdn.net/woliuyunyicai/article/details/45165869
1、并发和并行的区别
可由上图形象指出两者的区别:
1)定义:
并行:在操作系统中,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
来个比喻:并发和并行的区别就是一个人同时吃三个馒头和三个人同时吃三个馒头;
在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(parallel)。
2)并发通常指提高运行在单处理器上的程序的性能;
并发是有状态的,“具有可论证的确定性,但是实际上具有不可确定性”;
"并发"在微观上不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,从宏观外来看,好像是这些进程都在执行。
使用多个线程可以帮助我们在单个处理系统中实现更高的吞吐量,如果一个程序是单线程的,这个处理器在等待一个同步I/O操作完成的时候,他仍然是空闲的。在多线程系统中,当一个线程等待I/O的同时,其他的线程也可以执行。
并发是多个事件在同一时间间隔内发生,并行是指多个事件在同一时刻发生。在单处理机系统中,进程是并发执行的,是不能并行的,其它CPU与设备,设备与设备,CPU与通道都是可以并行的。