作业 我必须做一些在 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
,直到他们所有的结果出来。
最后,工作完成。