Linux下线程的属性设置

 1.线程有哪些属性
         linux系统定义了一个结构体pthread_attr_t,该结构体中包含了线程所有的属性
         {

               具体成员见图示截图

         }


   2.如何设置线程的这些属性(通用方法)
          第一步:定义线程属性变量并初始化该变量
                    pthread_attr_t  myattr;
                    int pthread_attr_init(pthread_attr_t *attr);

 

          第二步:依据你想要设置的具体属性,调用对应的接口函数
                    pthread_attr_setxxxxx();
          第三步:创建线程的时候使用你刚才设置好的属性
                    pthread_create(id号,&myattr);
          第四步:销毁属性,主函数结束的时候销毁属性
                    pthread_attr_destroy(); 
    3.以设置线程的分离属性作为例子,演示属性设置的全过程
          分离属性:有两种,一种是可分离,一种是不可分离
            可分离:子线程退出的时候不需要主线程去回收它(主线程想回收也回收不了,join函数也不会阻塞),子线程交给操作系统去处理回收
                    线程设置成分离的(自灭)
           不可分离:子线程退出的时候需要主线程调用join()函数去回收它,线程默认是不可分离的
                        pthread_create(id号,NULL);
          (1)设置分离属性的函数
               int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate);
                        参数:attr --》属性变量
                              detachstate --》PTHREAD_CREATE_DETACHED  //可分离
                                              PTHREAD_CREATE_JOINABLE  //不可分离(线程默认就是这个)

 

#include "myhead.h"
void *fun(void *arg)
{
	while(1)
	{
		printf("线程跑起来了!\n");
		sleep(1);
	}
	
	//结束线程
	pthread_exit("线程退出了");
}
int main()
{
	void *buf;
	pthread_t id;
	//定义属性变量,初始化
	pthread_attr_t myattr;
	pthread_attr_init(&myattr);
	
	//调用你想的设置的那个属性对应的接口函数
	pthread_attr_setdetachstate(&myattr,PTHREAD_CREATE_DETACHED); //线程可分离
	
	//创建线程,使用你刚才设置好的属性
	pthread_create(&id,&myattr,fun,NULL);
	
	//我想回收子线程
	pthread_join(id,&buf); //此时由于线程设置成了可分离,join无法回收该线程,join也不会阻塞
	printf("我回收的子进程退出信息是:%s\n",(char *)buf);
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值