我只是在学习编程结构;特别是我正在研究并发程序。我遇到了几篇文章,其中并发程序、并行程序和分布式程序之间的区别似乎令人困惑。
我的理解如下:
并发程序:同时执行多个任务或给出这样做的概念
并行程序:解决此类问题的算法允许同时执行一些相关的任务
分布式程序:与可用资源有关,而不是相应算法中固有的并行性。不止一种计算资源可用于解决该问题。
有人可以指出我对这些术语的正确和详细解释吗?
我只是在学习编程结构;特别是我正在研究并发程序。我遇到了几篇文章,其中并发程序、并行程序和分布式程序之间的区别似乎令人困惑。
我的理解如下:
并发程序:同时执行多个任务或给出这样做的概念
并行程序:解决此类问题的算法允许同时执行一些相关的任务
分布式程序:与可用资源有关,而不是相应算法中固有的并行性。不止一种计算资源可用于解决该问题。
有人可以指出我对这些术语的正确和详细解释吗?
这些术语确实是相关的,有时是重叠的:并行编程是并发编程的一个子集,旨在使用多个并发执行的实体(线程、进程)来加速某些计算。正如您所说,分布式计算是一个非常广泛的主题,专注于使用资源来解决问题。这些资源可以在同一台机器上,也可以在地理上分散或异构。很难在并行计算和分布式计算之间划清界限。并行计算可能是分布式的,也可能不是分布式的,这取决于所使用的资源,而分布式计算可能会或可能不会用于并行解决问题。
在我看来,这些术语之间的细微差别来自于考虑它们的抽象层。当主要关注点是单独的计算实体在某些共享数据上的交互时,我们就会讨论并发编程。当关键方面是通过使用多个计算单元来加速计算时,我们就有了并行计算。最后,如果重点是管理资源以解决某些问题的方式,那么我们正在谈论分布式计算。