【问题标题】:recursive pthread spawning - stack location递归 pthread 生成 - 堆栈位置
【发布时间】:2013-12-22 12:05:50
【问题描述】:

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

【问题讨论】:

  • '现在在我看来'你如何认可这样的观察?什么会导致你做出这样的假设?
  • 你太离谱了。

标签: c++ multithreading pthreads


【解决方案1】:

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

如果孩子的堆栈将继续存在于父堆栈上,那么一旦父母结束,孩子的堆栈就会变得无效,并且孩子无法继续存在。

后者并非如此。

由此可以得出结论,孩子的堆栈存在于父堆栈上。

【讨论】:

  • 你是对的。经过更多测试,我可以得出结论,我的假设是不正确的。谢谢回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2015-06-06
  • 2011-01-30
  • 2020-08-22
  • 2016-12-06
  • 2019-08-25
  • 2015-09-12
相关资源
最近更新 更多