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