Linux 线程属性的使用
线程属性
线程具有属性,用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 线程属性的使用相关推荐
- Linux线程属性及优先级设置
Linux线程属性及优先级设置 [原文引自]http://hikesoso2010.spaces.eepw.com.cn/articles/article/item/86413# 线程的属性由pthr ...
- Linux线程属性总结 http://blog.csdn.net/zsf8701/article/details/7842392
Linux线程属性总结 分类: Linux 2012-08-08 11:05 3657人阅读 评论(2) 收藏 举报 linux thread solaris concurrency syst ...
- linux设置进程优先级,Linux线程属性及优先级设置
POSIX.1线程属性及优先级设置 By zieckey All Right Reserved 线程的属性由pthread_attr_t结构类型表示. 在使用pthread_attr_t之前,需要调用 ...
- Linux线程属性总结
http://blog.csdn.net/zsf8701/article/details/7843837 线程属性标识符:pthread_attr_t 包含在 pthread.h 头文件中. [c] ...
- linux内核线程优先级设置,Linux c 线程属性,线程优先级的修改
Linux c 线程属性,线程优先级的修改 发布时间:2018-07-19 10:24, 浏览次数:1290 , 标签: Linux 线程属性的设置,网上找的文章总感觉不够全面,还是结合man手册查看 ...
- Linux多线程实践(3) --线程属性
初始化/销毁线程属性 int pthread_attr_init(pthread_attr_t *attr); int pthread_attr_destroy(pthread_attr_t *att ...
- Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)
对比 进程 线程 fork pthread_create exit (10) pthread_exit (void *) wait (int *) pthread_join (,void **)阻塞 ...
- linux多线程学习(三)——线程属性设置
在上一篇文章中,介绍了线程的创建和退出,以及相关函数的使用.其中pthread_create函数的第二个参数,是关于线程属性的设置,这也是今天所有讲述的.这些属性主要包括邦定属性.分离属性.堆栈地址. ...
- linux c 线程属性 pthread_attr_t 简介
线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化. 调用pthread_attr_init之后,pthread_t结构所包含的内容就是 ...
最新文章
- ospf与辅助接口实验
- cloud foundry_使用“另类” Cloud Foundry Gradle插件无需停机
- 计算机网络应用层笔记--域名系统DNS
- pc构件生产线及设备_筑友装备的PC生产线
- rs232转usb驱动_Trinamic发布6轴步进电机驱动模块TMCM-6214
- python中文版下载-python3.8.1汉化版
- 她每天吃一个煮熟的苹果,从此打开了通往新世界的大门~
- 微信该服务器已饱满,微信故障背后:用户91pron过亿后的小故障有大影响
- 小学计算机二课堂活动总结,康宁路学校“信息技术与课堂教学深度融合”活动总结...
- Mybatis之错误:Invalid bound statement (not found)
- 计算机科学怎么撤稿,撤稿Nature后,这所大学在撤Science!
- 存储-对象存储、文件存储和块存储
- 交互设计指南 iphone_交互设计:角色创建指南
- 一种简单的MOS管直流电机驱动电路
- 如何在保持营养均衡的同时不长肉
- (二)海思3519av100开发:开发板环境搭建
- 服务器文件上传500报错,500 InternalServerError
- OpenNI开源框架
- 小程序图片懒加载放在服务器,【小程序】使用uni-app搭建小程序环境---图片懒加载...
- 美丽乡村——大堰镇万一村
热门文章
- oracle执行脚本顺序执行吗,【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题 - 不及格的飞鱼...
- java线程睡眠分析,java线程睡眠有关问题
- java解决策略膨胀_折腾Java设计模式之策略模式
- 一段echats 饼状图刷新代码
- 计算机考研:计算机组成原理考点分析
- spring mvc 模拟数据库实现注册 登录
- linux 进程通信之 mmap
- pyppeteer:比selenium更高效的爬虫利器
- 《挖财编程题》水花仙数
- Jython调用不包含第三方库的python脚本