代码之家  ›  专栏  ›  技术社区  ›  devoured elysium

并行编程和并行编程一样吗?

  •  12
  • devoured elysium  · 技术社区  · 14 年前

    他们是同一件事吗?看看几何中的并行或并行意味着什么,我肯定会说不:

    在几何学中,如果两条或两条以上的线相交于一个点,就称为平行线。

    平面上的两条线 相交或相交称为平行 线。

    同样,在编程中,它们有相同的含义吗?如果是……为什么?

    谢谢

    3 回复  |  直到 14 年前
        1
  •  6
  •   Josephine    14 年前

    我同意几何词汇有冲突。相反,想想火车轨道:两列平行轨道的火车可以独立运行,同时运行,很少或没有相互作用。这些火车并行运行。

    基本的使用难点是“并发”可以是指“同时”(与列车或代码)或“在同一地点”(与几何线)。对于许多实际用途(列车、线程资源),这两个概念直接冲突。

    自然语言是 想象上的 愚蠢,模棱两可,令人困惑。但我们是程序员。我们可以避开形式编程语言的清晰、简单和优雅。就像Perl。

        2
  •  3
  •   Rafe Kettler    14 年前

    来自维基百科:

    并行计算是 计算程序 设计为交互的集合 可能的计算过程 并行执行。

    基本上,如果程序由较小的交互过程组成,那么它们可以作为并发程序编写。并行编程实际上是同时进行这些过程。

    所以我认为并发编程实际上是一种风格,它允许并行执行进程以提高性能。

        3
  •  2
  •   Massimo Cafaro    14 年前

    不,绝对并发和并行是不同的。具体方法如下。

    并发是指在同一时间段内共享资源。例如,几个进程可以共享同一个CPU或共享内存或I/O设备。

    现在,根据定义,只有当第二个进程在第一个进程终止之前(在同一个CPU上)开始执行时,两个进程才是并发的。如果两个进程都运行在同一个单核CPU上,那么进程是并发的,但不是并行的:在这种情况下,并行只是虚拟的,指的是执行分时的操作系统。操作系统似乎同时执行多个进程。如果只有一个单核CPU,那么在任何特定时间只能执行来自一个进程的一条指令。由于人类的时间尺度比现代计算机慢数十亿倍,操作系统可以在进程之间快速切换,使多个进程同时执行。

    如果您在两个不同的CPU上运行这两个进程,那么这些进程是并行的:在同一时间段内没有共享,因为每个进程都在自己的CPU上运行。这种情况下的并行性不是虚拟的,而是物理的。值得注意的是,在同一个多核CPU的不同内核上运行仍然不能被归类为完全并行,因为进程将共享同一个CPU缓存,甚至会争夺它们。