我正在玩pthreads
,现在在我看来,当我从先前使用pthread_create
生成的线程调用pthread_create
时,新{的堆栈{1}}将在父线程的堆栈上分配。在主线程中,这不会是一个问题,因为主线程的堆栈仍然可以增长,因为MMU将在必要时为其分配和映射新内存,但pthread
具有固定的堆栈大小。因此,当我从pthread创建一个pthread时,我必须确保father-pthread的stacksize(和guardsize)足够大以容纳子pthread的堆栈(加上guardpages)。
这个假设是否正确?我无法找到任何关于此的文档。
答案 0 :(得分:3)
使用pthread_create()
创建的父线程可以使用pthread_create()
创建另一个子线程。
如果孩子的堆栈将存在于父级的堆栈中,那么一旦父级结束,孩子的堆栈将变为无效,并且孩子无法继续生活。
后者并非如此。
从这一点可以得出结论,孩子的堆栈不生活在父亲的堆栈上。