多线程并行和并发的区别是什么?
目录
多线程相关概念
官方定义是: 多线程是指从软件或者硬件上实现多个线程并发执行的技术。
通俗来讲是: 指一个或多个进程有多条执行路径。
进程
• 指的是可以执行的程序或文件(例如: exe)
可以抽象理解为: 现实生活中的 汽车
线程
• 指的是进程的指定单元,也叫执行路径
可以抽象理解为: 现实生活中的 柏油路
此时再来看多线程并行和并发的区别:
并行
并行: 指的是两个(或以上)的线程同时执行。 前提: 需要多核CPU
可以理解为CPU不同的核(核简单理解为CPU可以同时执行的数量,CPU只有一核那么说一瞬间CPU只能做一件事)干不同的事情,就比如你要计算一加到一百,一个核的话就只能一个一个 的累加,但是如果是两个核或者多个核的话,以两核为例,就可以一个去执行一加到五十,另一个核同时执行五十一加到一百,最后再合并。在同样的频率下速度直接快了一倍,就是并行。
并发
并发: 指的是两个(或以上)的线程同时请求执行,但是同一瞬间CPU只能执行一个,于是CPU就安排他们交替执行,我们看起来好像是同时执行的,其实不是。
相当于幼儿园老师喂小朋友吃饭(一个幼儿园老师),是老师分配时间给一个小朋友一个小朋友喂饭的,给每个小朋友分配一段时间来喂饭,如果老师不先把这个小朋友喂完饭那么其他小朋友就不能得到老师喂饭的机会,假设如果老师喂饭速度达到一个非常快的速度,以至于我们以为老师是在一瞬间把所有的小朋友喂完饭的情况下。 就和多个线程(程序)同一瞬间CPU分配时间来执行程序一样,是一个一个的执行,如果执行不结束那么其它程序就无法执行需要等待,但是由于同一瞬间计算机速度运行太快,我们肉眼难以分辨,所以看起来好像是同时执行的,但其实不是,这就是并发。