C 并行编程=多子进程还是每个进程创建一个子进程?

C 并行编程=多子进程还是每个进程创建一个子进程?,c,multithreading,process,parallel-processing,C,Multithreading,Process,Parallel Processing,不知道“并行编程”是什么意思。。。但我有两个想法 进程A产生一定数量的子进程。进程A完成创建子进程后,所有子进程将同时运行 进程A创建子进程B,进程B创建另一个它的子进程C,进程C创建子进程D,依此类推。。。完成后,所有已分配任务的流程将同时运行 哪一个是并行编程的正确思想?谢谢你的帮助 编辑:我假设同时运行不同的程序需要多个进程?我想说两者都不是“并行编程的正确思想”,因为场景要求同时执行进程 并行性是指任务实际上同时运行(即在多核处理器上)。如果您的所有进程都在单核处理器上分叉/执行,那么这

不知道“并行编程”是什么意思。。。但我有两个想法

  • 进程A产生一定数量的子进程。进程A完成创建子进程后,所有子进程将同时运行

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

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


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

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

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

    您的应用程序(称之为“进程”)从一定数量的活动线程开始,在经典的Unix和windows系统中通常为1个。线程表示单独的工作需求

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

    在任何时候,线程都可能死亡(退出或自杀)。或者,它可以为其工艺制造更多的螺纹。因此,进程拥有的线程数通常是动态的。(在大多数操作系统中,线程也可以生成其他进程,但这只是混淆了情况,没有添加任何真正不同的内容)。

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

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


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

    。只要你有多件事情同时发生,那么你就有并行计算。