线程属性

线程属性的对象类型为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堆栈大小的指针;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值