通常为线程保留多少堆栈空间? (POSIX / OSX)

时间:2014-05-12 12:23:37

标签: multithreading macos assembly operating-system posix

答案可能因操作系统而异,但我很好奇线程通常会预先分配多少堆栈空间。例如,如果我使用:

push rax

将在堆栈上放置一个值并递增rsp。但是如果我从不使用push op呢?我想有些空间仍然可以分配,但多少钱?此外,这是一个固定的数量,还是随着物品的数量push动态增长?

1 个答案:

答案 0 :(得分:4)

POSIX没有定义任何有关堆栈大小的标准,它完全取决于实现。由于您标记了此OSX,因此默认分配为:

  • 主线程(8MB)
  • 辅助线程(512kB)

当然,这些可以根据您的需求进行配置。分配是动态的:

  

辅助线程允许的最小堆栈大小为16 KB   堆栈大小必须是4 KB的倍数。这个记忆的空间是   在线程创建时留在进程空间中,但是   与该内存关联的实际页面直到它们才会创建   需要

此处包含的细节太多了。我建议你阅读:

Thread Management (Mac Developer Library)