简介
这里需要明白的概念有:多核、多进程、多线程、并行计算、并发计算的区别。
什么是多核
在计算机设计早期,为了响应更多计算性能的需要,单处理器系统发展成为多处理器系统。更现代的、类似的系统设计趋势是将多个计算核放到单个芯片。无论多个计算核是在多个CPU芯片上还是在单个 CPU 芯片上,我们称之为多核或多处理器系统。
多进程
进程就是正在进行的一个程序或者任务,而负责执行任务的是CPU,执行任务的地方是内存。程序运行时的过程就是进程,同一个程序执行两次就是两个进程了。
并发与并行
并发和并行都是“同时”在工作,对于并发而言,是“伪并行”,即看起来是同时运行,其实是频繁更换CPU执行的程序代码,加之中间延迟很小,从我们的视角来看感觉就像是程序在同时运行;并行计算才是真正的同时计算,仅有多核才能是并行。
例子:你正在吃饭,电话响了
并发:放下筷子去接电话,接完电话然后继续吃饭
并行:一边接电话一边吃饭
并发: 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
并行: 当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
注意这里讨论的并行性和并发性的区别。并行系统可以同时执行多个任务。相比之下,并发系统支持多个任务,允许所有任务都能取得进展。因此,没有并行,并发也是可能的。
在 SMP 和多核架构出现之前,大多数计算机系统只有单个处理器。CPU 调度器通过快速切换系统内的进程,以便允许每个进程取得进展,从而提供并行假象。这些进程并发运行,而非并行运行。
随着系统线程数量从几十个到几千上万个,CPU 设计人员通过增加硬件来改善线程性能的提高系统性能。现代 Intel CPU 的每个核经常支持两个线程,而 Oracle T4 CPU 的每个核支持 8 个线程。这种支持意味着,可以将多个线程加载到处理核以便快速切换。毫无疑问,多核计算机将继续增加多核数量和硬件线程支持。
强烈注意: 多核,多cup,多机是不同的概念。
多线程编程提供机制,以便更有效地使用这些多个计算核和改进的并发性。考虑一个应用,它有 4 个线程。对于单核系统,并发仅仅意味着线程随着时间推移交错执行(图 1),因为处理核只能同一时间执行单个线程。