gpt4 book ai didi

c - 这个并行流可以工作吗?

转载 作者:行者123 更新时间:2023-11-30 14:26:28 26 4
gpt4 key购买 nike

我正在尝试向单线程单进程程序添加并行处理组件。我刚刚学习一些多重处理方法,因此并不完全确定它们的功能。

我希望实现的程序逻辑:

  • 主进程调用函数。
    • 在 for 循环开始时调用函数 fork()。
      • 子级继续执行功能工作,执行其他子功能或根据时间检查退出。
    • 同时,父进程首先结束 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() 的提示也会有所帮助。

最佳答案

是的,您最终将总共有 11 个进程。

您可能需要调用 waitpid 函数,直到不再有子进程(返回 ECHILD)。

编辑:刚刚注意到你需要pid_t pid = fork();,而不是pid = pid();

关于c - 这个并行流可以工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9048084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com