并发(Concurrency)与并行(Parallelism)
并发:是指在某个时间段内,多任务交替处理的能力。由于CPU不会一直执行某个进程,让其他进程一直处于等待状态,所以,CPU把可执行时间均匀地分成若干份,每个进程执行一段时间后,记录当前的工作状态,释放相关的执行资源并进入等待状态,让其他进程抢占CPU资源。
并发:是指同时处理多任务的能力。
目前,CPU已经发展为多核,可以同时执行多个互不依赖的指令及执行快。并发与并行两个概念的核心区别在于是否同时执行。以KTV唱歌为例,并行指的是多人同时使用话筒唱歌,并发指一个话筒被多个人轮流使用。
并发与并行的目的都是尽可能快的执行完所有任务。以医生做诊为例,某个科室有两个医生同时上班,这就是两个并行任务;其中一个医生时而问诊,时而看化验单,时而回答病人咨询,这就是并发。在并发环境下,有以下特点:
- 并发程序之间有相互制约的关系。直接制约体现为一个程序需要另一个程序的计算结果;间接制约体现为多个程序竞争共享资源,如处理器、缓冲区等,实际业务表现为对数据库数据的修改或文件的编辑等,引发线程安全问题。
- 并发程序的执行结果是断断续续的。程序需要记忆现场指令及执行点。
- 当并发数设置合理且CPU拥有足够的处理能力时,并发会提高程序的运行效率。