Linux线程的创建和属性pthread_attr_t设置

Posix线程中的线程属性pthread_attr_t主要包括detach属性、policy属性、优先级、继承属性、堆栈地址、scope属性、堆栈大小。在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置。

  1. detach属性:__detachstate,如果设置为PTHREAD_CREATE_DETACHED 则新线程不能用pthread_join()来同步,且在退出时自行释放所占用的资源。缺省为PTHREAD_CREATE_JOINABLE状态。这个属性也可以在线程创建并运行以后用pthread_detach()来设置,而一旦设置为PTHREAD_CREATE_DETACH状态(不论是创建时设置还是运行时设置)则不能再恢复到PTHREAD_CREATE_JOINABLE状态。使用pthread_attr_setdetachstate()设置
  2. policy属性:__schedpolicy,表示新线程的调度策略,主要包括SCHED_OTHER(正常、非实时)、SCHED_RR(实时、轮转法)和SCHED_FIFO(实时、先入先出)三种,缺省为SCHED_OTHER,后两种调度策略仅对超级用户有效。运行时可以用过pthread_attr_setschedpolicy ()来改变。
  3. 优先级:__schedparam,一个struct sched_param结构,目前仅有一个sched_priority整型变量表示线程的优先级。这个参数仅当调度策略为实时(即SCHED_RR或SCHED_FIFO)时才有效,并可以在运行时通过pthread_setschedparam()函数来改变,缺省为0。
  4. 继承属性:__inheritsched,有两种值可供选择:PTHREAD_EXPLICIT_SCHED和PTHREAD_INHERIT_SCHED,前者表示新线程使用显式指定调度策略和调度参数(即attr中的值),而后者表示继承调用者线程的值。通过pthread_attr_setinheritsched()设置,缺省为PTHREAD_EXPLICIT_SCHED
  5. scope属性:__scope,表示线程间竞争CPU的范围,也就是说线程优先级的有效范围。POSIX的标准中定义了两个值:PTHREAD_SCOPE_SYSTEM和PTHREAD_SCOPE_PROCESS,前者表示与系统中所有线程一起竞争CPU时间,后者表示仅与同进程中的线程竞争CPU。通过pthread_attr_setscope()设置

 

创建线程前先调用pthread_attr_init()进行线程属性初始化

然后设置各个属性

设置好属性后调用拉起线程

int pthread_create(pthread_t *tidp,

const pthread_attr_t *attr,

(void*)(*start_rtn)(void*),

void *arg);

tidp:指向线程句柄的指针

attr:线程属性结构体

start_rtn:线程函数指针

arg:线程函数的参数

版权声明

原文链接:https://blog.csdn.net/u012218309/article/details/81217208

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值