Linux系统分析—线程属性

但是,有时项目中我们对线程会有些特殊的要求,比如修改线程栈的大小,直接调用线程的库函数无法满足需求,在这种情况下我们可以直接对线程属性进行设置。

类型pthread_attr_t是一个结构体,主要包括如下属性:作用域(scope)、栈尺寸(stack size)、栈地址(stack address)、优先级(priority)、分离的状态(detached state)、调度策略和参数(scheduling policy and parameters)。

线程默认的属性为非绑定、非分离、缺省的堆栈、与父进程同样级别的优先级。结构体具体定义如下:

主要结构体成员:

  • ​线程分离状态:etachstate
  • ​线程栈大小(默认平均分配):stacksize
  • ​线程栈警戒缓冲区大小(位于栈末尾):guardsize

线程的属性值不能直接设置,须使用相关函数进行操作。属性的初始化的函数为pthread_attr_init,这个函数必须在pthread_create函数之前调用。使用完毕之后需调用pthread_attr_destroy函数来释放资源。

##线程属性初始化

函数原型:


  1. int pthread_attr_init(pthread_attr_t *attr); 

返回值:

成功:0;失败:错误号。

函数作用:初始化线程属性;

注意:应先初始化线程属性,再调用pthread_create创建线程。

##线程属性销毁

函数原型:


  1. int pthread_attr_destroy(pthread_attr_t *attr); 

返回值:

成功:0;失败:错误号

函数作用:销毁线程属性所占用的资源

##线程的分离状态

线程的分离状态决定一个线程最后终止的时候是以怎样的方式回收资源。

非分离状态:线程的默认属性是非分离状态,这种情况下,线程运行结束后,只有当其它线程调用pthread_join()函数去回收它时,创建的线程才算终止,才能释放自己占用的系统资源。

分离状态:线程如果设置为分离状态,则它将主动与主控线程脱离关系,当它自己运行结束了,线程也就终止了,马上释放系统资源。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章