聊聊并发编程

并发与并行

并发与并行,这是一个老生常谈的问题,简单来说,并发(concurrent)指的是在某个时间段内有多个程序在执行,而并行(parallel)指的是在某个时间点有多个程序在执行。

这也就是说,在某种程度上而言,并发是伪并行,真正的并行需要多个核心。由于现代计算机的核心往往是有限的,但通常运行的程序远大于核心数,所以在计算机科学中,并发往往是我们探讨的重点。

Go 语言的创造者之一 Rob Pike 就曾经指出:

并发用于制定方案,用来解决可能(但未必)并行的问题。