线程属性的对象类型为pthread_attr_t
在/usr/include/bits/pthreadtypes.h定义
定义如下
typedef struct
{
int detachstate; //卸载状态
int schedpolicy; //调度策略
struct sched_param scheparam; //调度参数
int inheritsched; //继承性
int scope; //作用域
size_taguard size;
int stackaddr_set;
void *stackaddr; //堆栈的位置
size_t stacksize; 堆栈大小
}pthread_attr_t;
1.线程对象的初始化和销毁函数
int pthread_attr_init(pthread_attr_t *attr);
int pthread_attr_destory(pthread_attr_t*attr);
2.线程的卸载状态函数
含义:在可联合的状态中,一个线程通过pthread_join函数同步线程的终止,而且可以恢复线程的代码;
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
int pthread_attr_getdetachstate(const pthread_attr_t*attr, int *detachstate);
attr指向属性对象的指针
detachstate卸载对象的指针,默认为PTHREAD_CREAT_JOINABLE
3.线程的的调度策略函数
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy );
int pthread_attr_getschedpolicy(const pthread_attr_t* attr,int *policy);
attr指向属性对象的指针
policy调度对象的指针,默认为SCHED_OTHER(未定义),SCHED_FILO(先进先出),SCHED_RR(轮转法)后两者root使用
4.线程的调度参数函数
int pthread_attr_setschedparam(pthread_attr_t*attr,const struct sched_param *param);
int pthread_attr_getschedpolicy(const pthread_attr_t*attr,struct sched_param*param);
attr指向属性对象的指针
param是sched_param结构的指针,在/usr/include/bits/sched.h定义
struct sched_param{
int sched_priority;
};
sched_priority默认参数为0;调度策略SCHED_OTHER时参数无效;调度策略SCHED_FILO或SCHED_RR时参数生效
5.线程的继承函数
int pthread_attr_setinheritsched(pthread_attr_t*attr, int inherit);
int pthread_attr_getinheritsched(const pthread_attr_t*attr,int inherit);
attr指向属性对象的指针
inherit对象的指针,默认为PTHREAD_EXPLICT_SCHED
6.线程的作用域
控制线程是否在线程内或在系统上竞争资源,
int pthread_attr_setscope(pthread_attr_t*attr, int scope);
int pthread_attr_getscope(const pthread_attr_t*attr,int scope);
attr指向属性对象的指针
scope对象的指针,默认为PTHREAD_SCOPE_SYSTEM;
6.线程的作用域
控制线程是否在线程内或在系统上竞争资源,
int pthread_attr_setscope(pthread_attr_t*attr, int scope);
int pthread_attr_getscope(const pthread_attr_t*attr,int *scope);
attr指向属性对象的指针
scope对象的指针,默认为PTHREAD_SCOPE_SYSTEM;
7.线程的堆栈地址函数
int pthread_attr_setstackaddr(pthread_attr_t*attr, int stack_addr);
int pthread_attr_getstackaddr(const pthread_attr_t*attr,int **stackaddr);
attr指向属性对象的指针
stackaddr堆栈地址的指针;
8.线程的大小指针函数
int pthread_attr_setstacksize(pthread_attr_t*attr, int stacksize);
int pthread_attr_getstackaddr(const pthread_attr_t*attr,int *stacksize);
attr指向属性对象的指针
stackaddr堆栈大小的指针;