pthread_attr_setstacksize 子例程
用途
设置线程属性对象的 stacksize 属性的值。
库
线程库libpthreads.a
语法
#include <pthread.h>
int pthread_attr_setstacksize (attr, stacksize)
pthread_attr_t *attr;
size_t stacksize;描述
pthread_attr_setstacksize子程序设置线程属性对象attr 的堆栈大小属性值。 此属性指定了使用此属性对象创建的线程的最小堆栈大小(以字节为单位)。
分配的堆栈大小总是8K字节的倍数,大于或等于要求的最小堆栈大小56K字节(PTHREAD_STACK_MIN)。 以下公式用于计算已分配的堆栈大小:如果所需的堆栈大小小于56K字节,则已分配的堆栈大小为56K字节;否则,如果所需的堆栈大小属于 (56 +(n - 1) * 16) K 字节到 (56 +n * 16) K 字节的范围,则已分配的堆栈大小为 (56 +n * 16) K 字节。
注意: pthread.h头文件必须是使用线程库的每个源文件的第一个包含文件。 否则,应使用-D_THREAD_SAFE编译标志,或使用 cc_r 编译器。 在这种情况下,会自动设置标志。
参数
| 项 | 描述 |
|---|---|
| attr | 指定线程属性对象。 |
| stacksize | 指定要设置的最小堆栈大小 (以字节计)。 默认堆栈大小为PTHREAD_STACK_MIN。 最小堆栈大小应大于或等于该值。 |
返回值
成功完成后,将返回 0。 否则,将返回错误代码。
错误代码
如果以下情况为真,则pthread_attr_setstacksize子例程不会成功:
| 项 | 描述 |
|---|---|
| EINVAL | attr 参数无效,或者 stacksize 参数的值超过系统施加的限制。 |
| ENOSYS | 未实现堆栈大小 POSIX 选项。 |