gpt4 book ai didi

multithreading - 将创建多少个进程和线程?

转载 作者:行者123 更新时间:2023-12-04 04:28:03 27 4
gpt4 key购买 nike

我有以下代码,并试图了解由此将创建多少个进程和线程:

pid t pid; 
pid = fork();
if (pid == 0) { /* child process */
fork();
thread create( . . .);
}
fork();

我认为它从if循环内的fork创建了2个线程。和8个过程?但我不确定那是否正确

最佳答案

实际上,应该有8个线程和6个进程。

下面的图表可以使您清楚:

1) after first fork():

|------------------- child of p0 [p1]
---|------------------- parent [p0]

2) after second fork():

|--------------- child of p1 [p2]
|---|--------------- [p1]
---|------------------- [p0]

3) after pthread_create():

----------- thread 1 of p2 [p2t1]
|---/----------- thread 0 of p2 [p2t0]
| ----------- thread 1 of p1 [p1t1]
|---|---/----------- thread 0 of p1 [p1t0]
---|------------------- [p0]

4) after third fork():

|------------ child of p2 [p5]
| ------ [p2t1]
|-|-----/------ [p2t0]
| |---------- child of p1 [p4]
| | ------ [p1t1]
|---|---|---/------ [p1t0]
| |------------ child of p0 [p3]
---|-----|------------ [p0]

重要:请记住, fork(2)调用仅克隆执行该线程的线程,因此进程4 [p4]只有一个线程(与进程5 [p5]相同)。

关于multithreading - 将创建多少个进程和线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15300830/

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