使用父进程和子进程划分和征服方法

时间:2017-05-21 14:24:19

标签: linux process c arrays fork

我必须做的任务需要使用linux中的进程。任务听起来像这样:通过以下方式使用分而治之方法计算数组元素的总和 - 父进程将数组拆分为两个不同的子列,这些子列将传递给两个子进程。每个子进程必须从它们自己的子数组中计算元素的总和,然后将添加结果(s1和s2);子进程应该重复相同的技术"直到最后的金额归还。

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

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 */
}
}

1 个答案:

答案 0 :(得分:0)

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

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

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

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

最后,工作已经完成。