问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux下C中怎么让才能安全关闭线程

发布网友 发布时间:2022-04-23 19:51

我来回答

1个回答

热心网友 时间:2023-10-07 23:51

多线程程序中,特别是频繁申请,释放线程的情况下,就要注意线程的关闭,最好使用线程池。
一,线程退出方式
(1) 执行完成后隐式退出;
(2) 由线程本身显示调用pthread_exit 函数退出;
pthread_exit (void * retval) ;
(3) 被其他线程用pthread_cance函数终止:
pthread_cance (pthread_t thread) ;
二,线程状态
pthread 线程有两种状态,joinable(非分离)状态和detachable(分离)状态,默认为joinable。
joinable:当线程函数自己返回退出或pthread_exit时都不会释放线程所用资源,包括栈,线程描述符等(有人说有8k多,未经验证)。
detachable:线程结束时会自动释放资源。
joinable 线程执行完后不使用pthread_join的话就会造成内存泄漏。
解决办法:
1、创建线程前设置 PTHREAD_CREATE_DETACHED 属性
pthread_attr_t attr;
pthread_t thread;
pthread_attr_init (&attr);
pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED);
pthread_create (&thread, &attr, &thread_function, NULL);
pthread_attr_destroy (&attr);
2、当线程为joinable时,使用pthread_join来获取线程返回值,并释放资源。
3、当线程为joinable时,也可在线程中调用 pthread_detach(pthread_self());来分离自己。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
胜达这款车百公里油耗多少? 胜达节能油加盟办厂可靠吗是不是骗子 河南洛阳胜达就是骗子,我把钱交了也不来人了,他们一个老总说了爱咋办... 胜达油是个骗局吗 胜达节能油是什么? 叩解度关于叩解的论述 湿重跟湿重有关的打浆磨片 戴尔XPS M1330-950重要参数 如果到别的单位去面试的话 如果人家问起为什么会选择这家公司而离开另外... 学生会被两个部门同时面试怎么办 居间就是中介吗?收居间费合法吗? 居间服务费合法吗 linux C线程崩溃的原因!!! 个人收居间费合法吗 孕妇梦见小黑蛇生男生女 私人拿居间费合法吗 自然人收取居间费用合法吗 梦见一条小黑蛇头顶带红色钻到我的裤子里被人抓住打死 居间费合法吗? 孕妇梦见在花园看到死了没有头的小黑蛇 个人收取居间费合法吗?应交纳什么税费? 孕妇梦见一条小黑蛇,要咬自己的老公,被婆婆打死了,是什么情况? 孕妇梦见一条小黑蛇,趴在我的背上然后拿下来砸死了, 居间费用合法吗? 孕妇梦见两条蛇一黄一黑,黑的死掉了 做居间费是否合法 居间费合法吗 居间费用合法吗 居间费合法么 初中数学北师大版的辅导书有哪些? 政府融资居间费合规吗 linux下C编程多线程同步和异步的区别,如何能实现程序的同步 linux的C语言开线程后如何归还使用的内存 村干部可以收取居间费吗 Linux C 写的线程怎么后台运行? Linux C 怎么实现两个线程同步读取两个内存的数据? linux c如何调整线程优先级 linux下C编程问题,线程 linux c 线程间同步(通信)的几种方法 Linux C++多线程出错??? linux系统下,c语言pthread多线程编程传参问题 Linux C 工程中有太多线程需要共享数据,怎样保证数据的同步? c语言实例,linux线程同步的信号量方式 谢谢 浅谈Linux多线程编程和Windows多线程编程的异同 林依晨男朋友 林依晨 背后的故事 谁知道郑元畅和林依晨的详细个人资料 关于林依晨的一些问题 郑元畅和林依晨会结婚吗? 林依晨前男友是