堆栈大小

堆栈大小由包装器线程对象 <env>Thread 的实现决定,它派生自 OMOSThread 接口。也就是说堆栈大小是在构造函数主体内定义的,该函数在线程创建调用时执行。例如,在 VxWorks 中 VxThread 对象的构造函数内,堆栈大小在 VxOS.h 中设置为 OMOSThread::DefaultStackSize 的缺省值,如下所示:

VxThread(void tfunc(void *), void *param,
   const char* const name = NULL,
   const long stackSize = 
   OMOSThread::DefaultStackSize);

VxOS.cpp 文件中,OMOSThread 中的 DefaultStackSize 设置为 DEFAULT_STACK(对于 VxWorks 定义为 2000),如下所示:

const long OMOSThread::DefaultStackSize = DEFAULT_STACK;

要更改所有新线程的堆栈大小,请更改 <env>OS.h 文件中的 DEFAULT_STACK 定义。您也可以通过将不同值作为第四个参数传递给线程构造函数来更改特定线程的堆栈大小。


反馈