我想运行一个进程,该进程内部有7个线程,Linux系统中每个线程的堆栈大小为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?

最佳答案

PTHREAD_STACK_MIN不应设置得太低。在启动时,该过程将调用libc函数来启动线程并运行程序。减小到系统中的默认大小以下不是一个好主意。 stack-min不仅用于函数中的变量。它也用于在进程/线程启动时发生的系统调用。

09-04 06:18