未设置boost::thread栈大小会产生什么影响?
未设置boost::thread栈大小的行为说明
- 不手动指定栈大小时,boost::thread会采用操作系统默认的线程栈大小,不同系统的默认值有明显差异:
- Windows平台默认栈大小通常为1MB(32位)或2MB(64位)
- Linux平台默认栈大小一般为8MB,可通过命令
ulimit -s查看当前系统的具体值
- 多数现代操作系统支持栈的自动扩容,但这种扩容有上限,当线程的栈使用量超出默认栈大小限制时,会触发栈溢出错误(比如你遇到的段错误)
- 对于递归层级深、局部变量占用大量内存的线程任务,默认栈大小可能无法满足需求,进而引发崩溃;但常规的线程逻辑,默认栈大小基本可以覆盖使用需求
内容的提问来源于stack exchange,提问作者Andrew Katson
相关产品推荐
相关产品推荐

