多线程编程指南

初始化属性

请使用 pthread_attr_init(3C) 将对象属性初始化为其缺省值。存储空间是在执行期间由线程系统分配的。

pthread_attr_init 语法

int pthread_attr_init(pthread_attr_t *tattr);
#include <pthread.h>



pthread_attr_t tattr;

int ret;



/* initialize an attribute to the default value */

ret = pthread_attr_init(&tattr);

表 3–1 给出了属性 (tattr) 的缺省值。

表 3–1 tattr 的缺省属性值

属性

结果

scope

PTHREAD_SCOPE_PROCESS

新线程与进程中的其他线程发生竞争。 

detachstate

PTHREAD_CREATE_JOINABLE

线程退出后,保留完成状态和线程 ID

stackaddr

NULL

新线程具有系统分配的栈地址。 

stacksize

新线程具有系统定义的栈大小。 

priority

新线程的优先级为 0。 

inheritsched

PTHREAD_EXPLICIT_SCHED

新线程不继承父线程调度优先级。 

schedpolicy

SCHED_OTHER

新线程对同步对象争用使用 Solaris 定义的固定优先级。线程将一直运行,直到被抢占或者直到线程阻塞或停止为止。 

pthread_attr_init 返回值

pthread_attr_init() 成功完成后将返回零。其他任何返回值都表示出现了错误。如果出现以下情况,该函数将失败并返回对应的值。


ENOMEM

描述:

如果未分配足够的内存来初始化线程属性对象,将返回该值。