当我使用像这样的setstack大小设置堆栈大小时。
ret=pthread_attr_setstacksize(&attr,1000);
printf("%d\n",ret);
pthread_attr_getstacksize(&attr,&size);
setstacksize返回非零值,表示尚未设置大小。 并且getstacksize正在打印垃圾值。 但如果我给出大于16384的大小,则设置堆栈并返回0。 并且getstacksize返回16384。
有人可以告诉我为什么setstacksize如果大小超过16384,设置堆栈大小是否有任何限制?
答案 0 :(得分:1)
来自the manual,“可能的错误”:
EINVAL
:堆栈大小小于PTHREAD_STACK_MIN
(16384)字节。在某些系统上,如果stacksize不是系统页面大小的倍数,则pthread_attr_setstacksize()可能会失败并显示错误
EINVAL
。