我想在linux系统中运行一个内部有7个线程且每个线程有8K堆栈大小的进程(fedora 18)
在我运行进程之前,我在终端中给出了以下命令
$ulmit -s 8 //Want to run my process and its threads each with 8K stack size
$./a.out // I started my process
使用此命令系统挂起并且没有响应。但是当我发出命令时
$ulimit -s 16 //MY process successfully started.
当我尝试使用8K时,在设置8K之前,我已将PTHREAD_STACK_MIN
(在/usr/include/bits/local_lim.h中)值更改为8192,默认情况下为16384。
我们可以运行8K堆栈大小的进程吗?有下限吗?或者我的进程中的任何线程消耗的堆栈大小超过8K?
答案 0 :(得分:0)
PTHREAD_STACK_MIN不应设置得太低。在启动时,该进程将调用libc函数来启动线程并运行程序。减少低于系统中的默认大小并不是一个好主意。 stack-min不仅适用于函数中的变量。它还用于在进程/线程启动时发生的系统调用。