在pthread中使用setstacksize函数设置堆栈大小的限制是什么?

时间:2014-12-06 10:17:03

标签: c unix

当我使用像这样的setstack大小设置堆栈大小时。

    ret=pthread_attr_setstacksize(&attr,1000);
    printf("%d\n",ret);
    pthread_attr_getstacksize(&attr,&size);

setstacksize返回非零值,表示尚未设置大小。 并且getstacksize正在打印垃圾值。 但如果我给出大于16384的大小,则设置堆栈并返回0。 并且getstacksize返回16384。

有人可以告诉我为什么setstacksize如果大小超过16384,设置堆栈大小是否有任何限制?

1 个答案:

答案 0 :(得分:1)

来自the manual,“可能的错误”:

  

EINVAL:堆栈大小小于PTHREAD_STACK_MIN(16384)字节。

     

在某些系统上,如果stacksize不是系统页面大小的倍数,则pthread_attr_setstacksize()可能会失败并显示错误EINVAL