并行编程=多子进程或每个进程创建一个子进程?

时间:2012-05-27 18:56:55

标签: c multithreading process parallel-processing

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

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

  2. 进程A创建子进程B,进程B创建另一个子进程C,进程C创建子进程D,依此类推......完成后,所有具有已分配任务的进程同时运行。

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

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

3 个答案:

答案 0 :(得分:1)

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

  1. 产生一组线程的单个进程可以完成一些工作。
  2. 产生一组子进程的单个进程可以完成一些工作。
  3. 在同一台计算机上独立生成多个进程以进行协同计算。
  4. 独立产生的多个进程在网络中的不同机器上进行协同计算。
  5. 与执行所有并行计算的GPU通信的单个进程。
  6. 上述任何组合或嵌套。
  7. 基本上,并行编程是编写并行解决问题的应用程序或应用程序组的行为。线程,进程等只是实现这一目标的手段。

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

答案 1 :(得分:0)

我会说 都不是“并行编程的正确思想”,因为场景需要同时执行这些过程。

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

答案 2 :(得分:0)

您的应用程序(称之为“进程”)以一些活动线程开始,通常在经典Unix和Windows系统中为1。线程代表单独的工作需求。

线程以实际或伪并行方式运行,具体取决于可用实际CPU的数量,调度程序的工作方式,优先级,同一台机器上其他进程/线程的需求,或者线程是否在等待与另一个进程的某些交互线程完成。您通常应该想象它们并行运行,无论它们单独取得进展的速度,还是调度程序的策略。

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