线程属性

线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。

名称::

pthread_attr_init/pthread_attr_destroy

功能:

对线程属性初始化/去除初始化

头文件:

#include <pthread.h>

函数原形:

int pthread_attr_init(pthread_attr_t *attr);

int pthread_attr_destroy(pthread_attr_t *attr);

参数:

Attr   线程属性变量

返回值:

若成功返回0,若失败返回-1。

调用pthread_attr_init之后,pthread_t结构所包含的内容就是操作系统实现支持的线程所有属性的默认值。

如果要去除对pthread_attr_t结构的初始化,可以调用pthread_attr_destroy函数。如果pthread_attr_init实现时为属性对象分配了动态内存空间,pthread_attr_destroy还会用无效的值初始化属性对象,因此如果经pthread_attr_destroy去除初始化之后的pthread_attr_t结构被pthread_create函数调用,将会导致其返回错误。

线程的分离状态

线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。

而分离线程不是这样子的,它没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。程序员应该根据自己的需要,选择适当的分离状态。所以如果我们在创建线程时就知道不需要了解线程的终止状态,则可以pthread_attr_t结构中的detachstate线程属性,让线程以分离状态启动。

名称::

pthread_attr_getdetachstate/pthread_attr_setdetachstate

功能:

获取/修改线程的分离状态属性

头文件:

#include <pthread.h>

函数原形:

int pthread_attr_getdetachstate(const pthread_attr_t * attr,int *detachstate);

int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate);

参数:

Attr   线程属性变量

Detachstate  线程的分离状态属性

返回值:

若成功返回0,若失败返回-1。

可以使用pthread_attr_setdetachstate函数把线程属性detachstate设置为下面的两个合法值之一:设置为PTHREAD_CREATE_DETACHED,以分离状态启动线程;或者设置为PTHREAD_CREATE_JOINABLE,正常启动线程。可以使用pthread_attr_getdetachstate函数获取当前的datachstate线程属性。

#include <pthread.h>

#include <iostream>
#include <semaphore.h>
#define SIZE 1024

void* child_thread(void* arg)
{
    printf("child thread\n");
}
int main(int argc, char* argv[])
{
    int res;
    pthread_t tid;
    pthread_attr_t attr;

pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    res = pthread_create(&tid, &attr, child_thread, NULL);
    pthread_attr_destroy(&attr);
    sleep(1);
    return(EXIT_SUCCESS);
}

名称::

pthread_attr_getdetachstate/pthread_attr_setdetachstate

功能:

获取/修改线程的分离状态属性

头文件:

#include <pthread.h>

函数原形:

int pthread_attr_getdetachstate(const pthread_attr_t * attr,int *detachstate);

int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate);

参数:

Attr   线程属性变量

Detachstate  线程的分离状态属性

返回值:

若成功返回0,若失败返回-1。

可以使用pthread_attr_setdetachstate函数把线程属性detachstate设置为下面的两个合法值之一:设置为PTHREAD_CREATE_DETACHED,以分离状态启动线程;或者设置为PTHREAD_CREATE_JOINABLE,正常启动线程。可以使用pthread_attr_getdetachstate函数获取当前的datachstate线程属性。

Linux 线程属性的使用相关推荐

  1. Linux线程属性及优先级设置

    Linux线程属性及优先级设置 [原文引自]http://hikesoso2010.spaces.eepw.com.cn/articles/article/item/86413# 线程的属性由pthr ...

  2. Linux线程属性总结 http://blog.csdn.net/zsf8701/article/details/7842392

    Linux线程属性总结 分类: Linux 2012-08-08 11:05  3657人阅读  评论(2)  收藏  举报 linux thread solaris concurrency syst ...

  3. linux设置进程优先级,Linux线程属性及优先级设置

    POSIX.1线程属性及优先级设置 By zieckey All Right Reserved 线程的属性由pthread_attr_t结构类型表示. 在使用pthread_attr_t之前,需要调用 ...

  4. Linux线程属性总结

    http://blog.csdn.net/zsf8701/article/details/7843837 线程属性标识符:pthread_attr_t 包含在 pthread.h 头文件中. [c]  ...

  5. linux内核线程优先级设置,Linux c 线程属性,线程优先级的修改

    Linux c 线程属性,线程优先级的修改 发布时间:2018-07-19 10:24, 浏览次数:1290 , 标签: Linux 线程属性的设置,网上找的文章总感觉不够全面,还是结合man手册查看 ...

  6. Linux多线程实践(3) --线程属性

    初始化/销毁线程属性 int pthread_attr_init(pthread_attr_t *attr); int pthread_attr_destroy(pthread_attr_t *att ...

  7. Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)

    对比 进程 线程 fork pthread_create exit (10) pthread_exit (void *) wait (int *) pthread_join (,void **)阻塞 ...

  8. linux多线程学习(三)——线程属性设置

    在上一篇文章中,介绍了线程的创建和退出,以及相关函数的使用.其中pthread_create函数的第二个参数,是关于线程属性的设置,这也是今天所有讲述的.这些属性主要包括邦定属性.分离属性.堆栈地址. ...

  9. linux c 线程属性 pthread_attr_t 简介

    线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化. 调用pthread_attr_init之后,pthread_t结构所包含的内容就是 ...

最新文章

  1. ospf与辅助接口实验
  2. cloud foundry_使用“另类” Cloud Foundry Gradle插件无需停机
  3. 计算机网络应用层笔记--域名系统DNS
  4. pc构件生产线及设备_筑友装备的PC生产线
  5. rs232转usb驱动_Trinamic发布6轴步进电机驱动模块TMCM-6214
  6. python中文版下载-python3.8.1汉化版
  7. 她每天吃一个煮熟的苹果,从此打开了通往新世界的大门~
  8. 微信该服务器已饱满,微信故障背后:用户91pron过亿后的小故障有大影响
  9. 小学计算机二课堂活动总结,康宁路学校“信息技术与课堂教学深度融合”活动总结...
  10. Mybatis之错误:Invalid bound statement (not found)
  11. 计算机科学怎么撤稿,撤稿Nature后,这所大学在撤Science!
  12. 存储-对象存储、文件存储和块存储
  13. 交互设计指南 iphone_交互设计:角色创建指南
  14. 一种简单的MOS管直流电机驱动电路
  15. 如何在保持营养均衡的同时不长肉
  16. (二)海思3519av100开发:开发板环境搭建
  17. 服务器文件上传500报错,500 InternalServerError
  18. OpenNI开源框架
  19. 小程序图片懒加载放在服务器,【小程序】使用uni-app搭建小程序环境---图片懒加载...
  20. 美丽乡村——大堰镇万一村

热门文章

  1. oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...
  2. java线程睡眠分析,java线程睡眠有关问题
  3. java解决策略膨胀_折腾Java设计模式之策略模式
  4. 一段echats 饼状图刷新代码
  5. 计算机考研:计算机组成原理考点分析
  6. spring mvc 模拟数据库实现注册 登录
  7. linux 进程通信之 mmap
  8. pyppeteer:比selenium更高效的爬虫利器
  9. 《挖财编程题》水花仙数
  10. Jython调用不包含第三方库的python脚本