pthread库学习-3:线程属性

线程属性结构如下:

typedef struct

{

      int                             detachstate;   线程的分离状态

      int                             schedpolicy;  线程调度策略

      structsched_param             schedparam;  线程的调度参数

      int                             inheritsched;  线程的继承性

      int                               scope;       线程的作用域

      size_t                          guardsize;   线程栈末尾的警戒缓冲区大小

      int                               stackaddr_set;

      void*                         stackaddr;   线程栈的位置

      size_t                          stacksize;    线程栈的大小

}pthread_attr_t;

对于每一个属性而言,都有查看&修改其属性值的函数。


1. 线程的分离状态

    线程的分离状态决定一个线程以什么方式来终止自己。

    默认情况下,非分离状态:线程return/pthread_ext -> 其他线程pthread_join返回 -> 线程释放自己占用的资源;

   分离状态:线程return/pthread_ext -> 线程释放自己占用的资源

   问题:若pthread_join等待已分离状态的线程,会如何?立即返回还是?


2. 线程的继承性

 继承性决定调度的参数是从创建的进程中继承还是使用在schedpolicy和schedparam属性中显式设置的调度信息.


3. 线程的作用域

  竞争资源的作用域:是在进程内还是在系统内;

  取值:PTHREAD_SCOPE_PROCESS(进程内竞争资源)PTHREAD_SCOPE_SYSTEM.(系统级上竞争资源)


4. 线程堆栈的大小


5. 线程栈末尾的警戒缓冲区大小

线程属性guardsize控制着线程栈末尾之后以避免栈溢出的扩展内存大小。这个属性默认设置为PAGESIZE个字节。可以把guardsize线程属性设为0,从而不允许属性的这种特征行为发生:在这种情况下不会提供警戒缓存区。同样地,如果对线程属性stackaddr作了修改,系统就会假设我们会自己管理栈,并使警戒栈缓冲区机制无效,等同于把guardsize线程属性设为0



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值