线程的分离属性

先看join属性:在线程中,要等待所有线程结束后才回收资源。例如:在一个主线程和3个子线程中,如果在主线程先执行exit()退出函数,子线程依然可以执行完毕后才退出。一般来说设置了和没设置差不多,只是为了回收僵尸线程。

再看detach分离属性:在线程中,如果主线程执行了分离属性,那么它将直接被回收资源,

1.初始化线程属性

pthread_attr_init();

2.设置线程属性

#include<pthread.h>

int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate);//设置

attr:线程属性

detachstate:需要设置的属性

PTHREAD_CREATE_DETACHED:分离属性(不需要等待,自动回收资源)

PTHREAD_CREATE_JOINABLE:结合属性(需要等待资源的回收,调用join函数)

3.根据属性创建线程:

pthread_create();

//回收线程第一步,初始化线程属性

pthread_attr_t attr;

pthread_attr_init(&attr);

//回收线程第二步,设置分离属性(这东西很长,难背)

pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED)

//回收线程第三步,利用分离属性创建线程

pthread_t tid;

pthread_create(&tid,&attr,task,NULL);

//注意!使用分离属性后,pthread_join函数失效

一个最简单的设置分离属性

#include<pthread.h>

int  pthread_detach(pthread_t thread);

//thread:需要设置为分离属性的线程

这就是两种线程资源回收的方式,按照实际情况来选择

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值