【发布时间】:2020-10-21 16:04:11
【问题描述】:
我只是要发布伪代码, 但我的问题是我有这样的循环
for(i<n){
createfork();
if(child)
/*
Exit so I can control exact amount of forks
without children creating more children
*/
exit
}
void createfork(){
fork
//execute other methods
}
我的 fork 是否创建了一个进程做它应该做的事情并退出然后创建另一个进程并重复?如果是这样,有什么方法可以解决这个问题,让进程同时运行?
【问题讨论】:
-
一旦分叉,进程既可以独立运行也可以并发运行。
-
视情况而定。如果您有多个内核,那么它们将并行运行。多任务操作系统的全部意义在于它提供了进程在单个处理器上并行运行的错觉,因此从您应该关心的唯一角度来看,它们是并行运行的。
-
@williampursell 是的,我完全理解这一点,老实说,我更喜欢多线程方法而不是多处理,但应用程序需要多个进程,我需要将其分解为至少 6 个它在技术上所做的部分。尽管如果可能的话,我会尝试让它们同时运行。
-
2 个进程并行运行。父母和孩子。一旦“执行其他方法”返回,子进程被终止,父进程再次分叉。然后 OP 问道:“好吧,这是有道理的,这就是我认为正在发生的事情,那么在其他方法中使用 fork 是让它们全部并行运行的唯一方法吗?在给定循环的情况下,没有办法做到这一点吗?”跨度>