线程处理完成,如何立即释放线程?

 我来答
kkkk筛慷0
2013-08-25 · TA获得超过156个赞
知道答主
回答量:121
采纳率:0%
帮助的人:58.9万
展开全部
某时之前,我认为在unix下面所谓释放线程,就是在线程处理函数完成退出。 因此线程程序就如下了: #include <pthread.h #include <stdio.h void * func(void * arg){pthread_exit(0);return 0;}int main(int argc, char ** argv){pthread_t pt_id; if(0 != pthread_create(&pt_id, NULL, func, NULL)){printf("pthread_create error/n");}return 0;}直到,我们的网络服务器在客户端频繁断开、链接...,终于出现了创建线程失败。 翻看资料发现,“在默认情况下,线程终止状态会保存到对该线程调用pthread_join,如果线程已经处于分离状态,线程的底层存储资源可以在线程终止时立即被收回...pthread_detach调用可以用户使线程进入分离状态。” 于是,要线程处理函数退出时,线程资源立即被回收,那么就应该使线程处于分离状态。 线程相干代码修改如下: #include <pthread.h #include <stdio.h void * func(void * arg){pthread_detach(pthread_self()); if(0 != pthread_create(&pt_id, NULL, func, NULL)){printf("server_accept::pthread_create/n");}}return 0;}测试,问题解决了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式