1

不确定“并行编程”是什么意思......但我有两个想法

  1. 进程 A 产生一定数量的子进程。一旦进程 A 完成创建子进程,所有子进程同时运行。

  2. 进程A创建子进程B,进程B创建另一个它的子进程C,进程C创建子进程D,等等......一旦完成,所有分配任务的进程同时运行。

哪一个是并行编程的正确思想?谢谢您的帮助!

编辑:我假设同时运行不同的程序需要多进程?

4

3 回答 3

2

术语“并行编程”比仅仅“产生子进程或线程的进程”要广泛得多。这可能意味着:

  1. 一个进程产生一组线程来做一些工作。
  2. 单个进程产生一组子进程来完成一些工作。
  3. 多个进程独立产生以在同一台机器上进行协作计算。
  4. 多个进程独立产生以在网络中的不同机器上进行协作计算。
  5. 与执行所有并行计算的 GPU 通信的单个进程。
  6. 以上任何组合或嵌套。

基本上,并行编程是编写并行解决问题的应用程序或应用程序组的行为。线程、进程等只是实现这一点的手段。

考虑这种情况:集群上发生的大型并行文本处理任务。主节点向其所有从节点发出命令以生成计算进程(全局并行)。每个进程依次产生多个线程/子进程以利用本地并行性(多核/多处理器节点)。

于 2012-05-27T20:01:11.767 回答
0

我会说“并行编程的正确思想”也不是,因为场景要求进程同时执行。

并行性是指任务实际上同时运行(即在多核处理器上)。如果您的所有进程都在单个核心处理器上分叉/执行,那么这将被视为concurrency,而不是parallelism

于 2012-05-27T19:43:37.303 回答
0

您的应用程序(称为“进程”)以一定数量的活动线程开始,在经典的 Unix 和 Windows 系统中通常为 1。线程代表单独的待办事项。

线程以真实或伪并行运行,具体取决于可用真实 CPU 的数量、调度程序的工作方式、优先级、同一机器上其他进程/线程的需求,或者线程是否正在等待与另一个线程的交互完成. 您通常应该想象它们并行运行,无论它们各自的进展速度有多快,或者调度程序的策略如何。

在任何时候,线程都可能死亡(退出或自杀)。或者,它可能会为其进程制造更多线程。因此,一个进程拥有的线程数通常是动态的。(在大多数操作系统中,线程也可以产生其他进程,但这只会混淆图片而不会添加任何真正不同的东西)。

于 2012-05-27T19:55:14.187 回答