首页 > 解决方案 > 线程和叉子

问题描述

假设我们有以下代码:

main    

some code...
fork()
fork()
some code

问题是:有多少线程正在运行?

谢谢 !

标签: cmultithreadingprocessfork

解决方案


感谢 Jeremy 的帮助,我找到了答案并想与您分享。

一般来说,如果我们有一个 fork() ,就会创建一个孩子。除非我们对孩子有不同的代码,否则孩子会运行父母的代码(也就是 fork() 下的代码)。所以在这个例子中,第一个 fork 将创建一个新进程,因为它将运行第二个 fork。

所以我们有1个父线程。来自 fork1 的 child1 的 1 秒线程。由于 fork2,来自 child1 的 1 个第三个线程。最后是来自 child2 的线程。所以总共有4个线程。


推荐阅读