2014-12-06 70 views
-2

当我设置堆栈大小使用像这样的setstack大小。在pthread中使用setstacksize函数设置堆栈大小的限制是什么?

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

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

有人可以告诉我为什么setstacksize如果考虑规模超过16384时,有没有设置任何限制堆栈大小?

回答

1

the manual “可能的错误”:

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

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