不确定“并行编程”是什么意思......但我对此有两点想法
进程A生成一定数量的子进程。一旦进程A完成创建子进程,所有子进程就会同时运行。
进程A创建子进程B,进程B创建另一个子进程C,进程C创建子进程D,依此类推......完成后,所有具有已分配任务的进程同时运行。
哪一个是并行编程的正确思想?谢谢你的帮助!
编辑:我认为同时运行不同的程序需要多进程?
答案 0 :(得分:1)
术语“并行编程”比仅仅“产生子进程或线程的进程”更广泛。它可能意味着:
基本上,并行编程是编写并行解决问题的应用程序或应用程序组的行为。线程,进程等只是实现这一目标的手段。
考虑这种情况:在群集上发生大型并行文本处理任务。主节点向其所有从属节点发出命令以生成用于计算的进程(全局并行性)。每个进程反过来产生多个线程/子进程,以利用本地并行性(多核/多处理器节点)。
答案 1 :(得分:0)
我会说 都不是“并行编程的正确思想”,因为场景需要同时执行这些过程。
并行性是指任务在同一时间运行(即在多核处理器上)。如果所有进程都在单个核心处理器上分叉/执行,那么这将被视为并发,而不是并行。
答案 2 :(得分:0)
您的应用程序(称之为“进程”)以一些活动线程开始,通常在经典Unix和Windows系统中为1。线程代表单独的工作需求。
线程以实际或伪并行方式运行,具体取决于可用实际CPU的数量,调度程序的工作方式,优先级,同一台机器上其他进程/线程的需求,或者线程是否在等待与另一个进程的某些交互线程完成。您通常应该想象它们并行运行,无论它们单独取得进展的速度,还是调度程序的策略。
任何时候,线程都可能死亡(戒烟或自杀)。或者,它可以为其过程制造更多线程。因此,进程拥有的线程数通常是动态的。 (在大多数操作系统中,线程也可以产生其他进程,但这只会混淆图片而不会添加任何真正不同的内容。)