将新任务分配给 forked() 进程

Assign new tasks to forked() processes

我需要创建一个多进程程序:

  1. 使用 fork();
  2. 创建 5 个进程
  3. 使用管道发送内容以执行子进程
  4. 当子进程完成其任务时,它应该从父进程接收新任务,直到所有任务完成。

现在我的想法是 wait() 完成子任务(然后它退出),然后创建一个新的子进程,所以我总是有最多 5 个进程。

有没有办法 "re-use" 已经存在的进程?也许 "signaling" 什么?在 Google.

上找不到它

使用 C.

我是这样解决问题的:

  • Children把他们计算的结果写在一个管道A上(这个管道没有阻塞)。然后他们在管道 B 上等待下一个输入(该管道正在阻塞)。

  • Parent 在所有试图从管道 A 读取内容的 children 上循环(此管道未阻塞,因此 parent 如果 child 没有发送任何东西)。如果管道 A 包含一个结果,parent 将另一个任务发送到管道 B 上的那个 child。

每个 child 有一个管道 A 和一个管道 B。