linux线程回收

本文详细介绍了使用pthread库进行线程管理的方法,包括如何设置线程属性、使用pthread_join实现线程同步以及了解线程分离的概念。通过实例演示,帮助开发者掌握高效利用线程提升程序性能的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                   void *(*start_routine) (void *), void *arg);

void pthread_exit(void *retval);

1. 设置线程属性
如果线程创建时,attr属性设置为NULL,那么线程采用默认的属性joinable。需要将属性设置为detached

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

pthread_t thread_id;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&thread_id, &attr, func, NULL);
pthread_attr_destroy(&attr);

2. pthread_join
阻塞等待线程退出,并清理(类似于wait, waitpid)

int pthread_join(pthread_t thread, void **retval);

pthread_join(thread, (void**)&thread_ret); //父线程调用
printf("thread_ret = %d.\n", *thread_ret);

3. pthread_detach 非阻塞

int pthread_detach(pthread_t thread);

pthread_detach(pthread_self()); //子线程调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值