xixitalk's snippet

Post Longer Than 140 Characters Tweets

Jul 18, 2016 - Comments

pthread退出时自动回收资源

pthread线程创建后默认属性是joinable,线程函数执行完资源不会自动回收线程资源,需要主进程pthread_join进行回收,否则就会造成不必要的内存占用,频繁创建退出线程可能会造成系统内存耗尽。除了pthread_join用这种办法更好些。

线程函数加上pthread_detach(pthread_self())的话,线程状态改变成unjoinable,这样线程函数尾部直接 pthread_exit线程就会自动退出。

static void  thread_fn( void *args)
{
	pthread_detach(pthread_self());

	while(flag)
	{
		/*do something*/
	}

	pthread_exit(NULL);
}

参考文章

http://blog.csdn.net/trinea/article/details/5191165

http://www.lxway.net/499814656.html


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。