我必须做的任务需要使用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 */
}
}
答案 0 :(得分:0)
您可以尝试使用for
循环来执行fork()
。
首先,将数组划分为多个子数组。
在第一个for()
循环中,您只需按fork()
创建一个子项,并为其指定一个子数组。(只需在if (pid == 0)
部分进行计算。)。
之后,所有子进程都准备好进行计算。
您需要另一个for()
循环来汇总所有子进程的结果。但要小心,你必须wait
所有的孩子进程,直到他们的所有结果出来。
最后,工作已经完成。