并行
是针对多处理器维度说的,每个处理器都有独自计算的能力,多个处理器同时计算就是并行
并发
是针对单处理器的维度说的,每个处理器在同时处理多个任务,其实准确的说,并不是同时执行,只是多个任务直接切换的特别快,快到我们感觉不到任务的切换,使我们只是感觉到多个任务都在执行,所以也有人说宏观串行,微观并行
举个例子:
并行好比三个人同时吃三碗饭,每个人相当于一个处理器
并发就是一个人吃三碗饭,每个时间段.每碗饭他都会去吃点,当时间段特别小的时候,我们就会看到他同时吃三碗饭的假象
于是,对于我们现在的计算机,都是多核计算机,当多个核同时执行任务,这就是并行,每个核执行不同的任务,这就是并发
所以我们平时说的高并发,多线程,就是针对单核来说,一个处理器有多个线程,精确的来说,同一个时间点只会有一个线程在执行,而同一时间段就会执行过多个线程,这也是因为线程直接会快速的来回切换,大家轮流执行,当线程特别多,切换的特别快,就是所谓的多线程高并发
当然,以上都是默认一个处理器只开一个进程的情况,当一个处理器有多个进程的时候,每个进程同时计算也是并行,单个进程开多个线程执行任务是并发