【发布时间】:2012-01-28 19:55:17
【问题描述】:
我正在尝试将并行处理组件添加到单线程单进程程序中。我只是在学习一些多处理方法,因此并不能完全确定它们的能力。
我要实现的程序逻辑:
- 主进程调用一个函数。
- 在 for 循环开始时调用了函数 fork()。
- child 继续执行功能工作,要么执行其他子功能,要么根据时间检查退出。
- 同时,父级首先结束 for 循环,然后重新开始,从而重新分叉第二个子级。
- 在 for 循环开始时调用了函数 fork()。
- 在执行了大约 10 次 fork() 之后,函数会一直持续到 for 循环结束。
- 一旦完成,函数会根据更高级别的计时器再次调用。
这个实现会起作用吗?示例代码:
check_timer() {
for(i = 0; i < 10; i++) {
pid_t pid = fork();
if(pid == 0) {
execute child 1 checks and possible executes..
exit(); // when completed
}
else {
parent maybe does something or just ends first round of for loop..
}
}
some implementation of wait(); to wait for all children to finish before leaving check_timer() function..
}
这是否会一次创建多达 10 个子进程在父进程的后台执行,然后等待子进程完成?还有一些关于如何使用 wait() 的提示也会有所帮助。
【问题讨论】:
标签: c parallel-processing fork wait