递归pthread产生 - 堆栈位置

时间:2013-12-22 12:05:51

标签: c++ multithreading pthreads

我正在玩pthreads,现在在我看来,当我从先前使用pthread_create生成的线程调用pthread_create时,新{的堆栈{1}}将在父线程的堆栈上分配。在主线程中,这不会是一个问题,因为主线程的堆栈仍然可以增长,因为MMU将在必要时为其分配和映射新内存,但pthread具有固定的堆栈大小。因此,当我从pthread创建一个pthread时,我必须确保father-pthread的stacksize(和guardsize)足够大以容纳子pthread的堆栈(加上guardpages)。 这个假设是否正确?我无法找到任何关于此的文档。

1 个答案:

答案 0 :(得分:3)

使用pthread_create()创建的父线程可以使用pthread_create()创建另一个子线程。

如果孩子的堆栈将存在于父级的堆栈中,那么一旦父级结束,孩子的堆栈将变为无效,并且孩子无法继续生活。

后者并非如此。

从这一点可以得出结论,孩子的堆栈生活在父亲的堆栈上。