使用父进程和子进程的分而治之方法



作业 我必须做一些在 Linux 中使用进程的要求。任务听起来像这样:通过以下方式使用分而治法计算数组元素的总和 - 父进程会将数组拆分为两个不同的子数组,这些子数组被传递给两个子进程。每个子进程都必须计算其自己的子数组中的元素之和,然后将结果(s1 和 s2)相加;子进程应重复相同的"技术",直到返回最终总和。

我必须承认,我真的不太了解 unix 进程,因为我刚刚开始学习这一章,但我知道如何使用 fork() 以便从父进程创建两个子进程,以及谁编写使用分而治之方法的 C 程序。我的问题是我正在努力将这两个方面结合起来,这意味着将分而治之算法 - 用于计算数组元素的总和 - 集成到创建两个子过程的程序中(例如以下一个:)

pid_t child_a, child_b;
child_a = fork();
if (child_a == 0) {
/* Child A code */
} else {
child_b = fork();
if (child_b == 0) {
/* Child B code */
} else {
/* Parent Code */
}
}

您可以尝试使用for循环来执行fork()

首先,将数组划分为多个子数组。 在第一个for()循环中,您只需通过fork()创建一个子数组,并为其分配一个子数组。(只需在if (pid == 0)部分中进行计算。

之后,所有子进程都准备好进行计算。

您需要另一个for()循环来汇总所有子进程的结果。但要小心,你必须为所有子进程wait,直到他们所有的结果出来。

最后,工作完成。

最新更新