并发与并行

有一个非常普遍的误解,认为并发与并行是一回事 - 其实不然!并行是同时执行某种类型的多个实体,而并发是构建组件的一种方式,以便它们可以在可能的情况下独立执行。

当您的操作系统和硬件允许时,只有当您并发地构建软件组件时,才能以并行地方式安全执行。早在CPU拥有多个内核且计算机拥有大量RAM之前,Erlang编程语言就有过类似的实践。

在有效的并发设计中,添加并发实体会使整个系统运行得更快,因为可以并行运行更多内容。因此,期望的并行性来自更好的并发表达和问题的实现。开发人员负责在系统的设计阶段考虑并发性,并从系统组件的潜在并行执行中受益。因此,开发人员不应该考虑并行性,而应该将程序分解为独立的组件,以便于通过组合来解决前面提到的问题。

即使您无法在Unix机器上并行运行功能,有效的并发设计仍可以改进程序的设计和可维护性。换句话说,并发性优于并行性!