将作业拆分为两个线程,使用wait,waitpid,fork

时间:2012-02-09 12:25:09

标签: c fork wait waitpid

我希望将分工分成两个子进程。一个孩子找到最小值,另一个孩子找到最大值。 以下是示例代码:

http://pastebin.com/P29wsRdP

现在返回值为min:0 max:0,你能看一下吗?

3 个答案:

答案 0 :(得分:1)

进程不共享内存。由函数修改的最小/最大值全局变量是进程的本地变量。它们都不会触及父min / maxvalue变量。 您需要以某种方式传达结果,例如使用管道/插座。

我认为你还有一个问题,就是你实际上会产生三个进程。 使用第一个fork()分叉的第一个进程将执行第二个fork(),因为它没有被if保护。

答案 1 :(得分:0)

你没有分裂成线程,你正在分裂成新的进程,每个进程都有自己的变量版本(因为两个新进程都有自己独立的内存)。你需要某种IPC,或者你需要实际使用线程。

答案 2 :(得分:0)

您没有像其他人所描述的那样使用线程。

但是当你们只能在一个循环中寻找最小/最大值时,为什么要这样做?