将新任务分配给 forked() 进程
Assign new tasks to forked() processes
我需要创建一个多进程程序:
- 使用
fork()
; 创建 5 个进程
- 使用管道发送内容以执行子进程
- 当子进程完成其任务时,它应该从父进程接收新任务,直到所有任务完成。
现在我的想法是 wait()
完成子任务(然后它退出),然后创建一个新的子进程,所以我总是有最多 5 个进程。
有没有办法 "re-use" 已经存在的进程?也许 "signaling" 什么?在 Google.
上找不到它
使用 C.
我是这样解决问题的:
Children把他们计算的结果写在一个管道A上(这个管道没有阻塞)。然后他们在管道 B 上等待下一个输入(该管道正在阻塞)。
Parent 在所有试图从管道 A 读取内容的 children 上循环(此管道未阻塞,因此 parent 如果 child 没有发送任何东西)。如果管道 A 包含一个结果,parent 将另一个任务发送到管道 B 上的那个 child。
每个 child 有一个管道 A 和一个管道 B。
我需要创建一个多进程程序:
- 使用
fork()
; 创建 5 个进程
- 使用管道发送内容以执行子进程
- 当子进程完成其任务时,它应该从父进程接收新任务,直到所有任务完成。
现在我的想法是 wait()
完成子任务(然后它退出),然后创建一个新的子进程,所以我总是有最多 5 个进程。
有没有办法 "re-use" 已经存在的进程?也许 "signaling" 什么?在 Google.
上找不到它使用 C.
我是这样解决问题的:
Children把他们计算的结果写在一个管道A上(这个管道没有阻塞)。然后他们在管道 B 上等待下一个输入(该管道正在阻塞)。
Parent 在所有试图从管道 A 读取内容的 children 上循环(此管道未阻塞,因此 parent 如果 child 没有发送任何东西)。如果管道 A 包含一个结果,parent 将另一个任务发送到管道 B 上的那个 child。
每个 child 有一个管道 A 和一个管道 B。