【问题标题】:8K stack size in linuxlinux中的8K堆栈大小
【发布时间】:2014-09-24 17:08:12
【问题描述】:

我想运行一个内部有 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(in /usr/include/bits/local_lim.h) 值更改为 8192,默认为 16384。

我们可以运行 8K 堆栈大小的进程吗?有没有下限?还是我进程中的任何线程消耗超过 8K 堆栈大小?

【问题讨论】:

  • ulimit 堆栈仅适用于主线程的堆栈,不适用于任何已创建的线程。为什么要尝试运行大小小于PTHREAD_STACK_MIN 的线程?这是进入你的线程例程所需的最小尺寸。

标签: linux


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2016-12-20
    • 2017-02-28
    • 2010-12-13
    • 2011-10-18
    • 1970-01-01
    • 2012-06-26
    相关资源
    最近更新 更多