线程处理完成,如何立即释放线程?
展开全部
某时之前,我认为在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;}测试,问题解决了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询