Linux中pthread_detach()线程注意

网友投稿 251 2022-09-30

Linux中pthread_detach()线程注意

一、创建分离线程有两种方式创建分离线程:(1)在线程创建时将其属性设为分离状态(detached);(2)在线程创建后将其属性设为分离的(detached)。​二、分离线程的作用由系统来回收线程所占用资源。三、实例#include #include #include #include #include #include #include #include #include #include void* thread1(void *arg){ while (1) { usleep(100 * 1000); printf("thread1 running...!\n"); } printf("Leave thread1!\n"); return NULL;}int main(int argc, char** argv){ pthread_t tid; pthread_create(&tid, NULL, (void*)thread1, NULL); pthread_detach(tid); // 使线程处于分离状态 sleep(1); printf("Leave main thread!\n"); return 0;}     这里的thread1线程是一个“死循环”,thread1线程又是“分离线程”。那么会不会主线程退出之后,thread1线程一直在运行呢?程序输出:[root@robot ~]# gcc thread_detach.c -lpthread[root@robot ~]# ./a.outthread1 running...!thread1 running...!thread1 running...!thread1 running...!thread1 running...!thread1 running...!thread1 running...!thread1 running...!thread1 running...!Leave main thread![root@robot ~]#可以看到在主线程退出之后,thread1线程也退出了。注意:“分离线程”并不是“分离”了之后跟主线程没有一点关系,主线程退出了,“分离线程”还是一样退出。只是“分离线程”的资源是有系统回收的。四、结论在进程主函数(main())中调用pthread_exit(),只会使主函数所在的线程(可以说是进程的主线程)退出;而如果是return,编译器将使其调用进程退出的代码(如_exit()),从而导致进程及其所有线程(包括分离线程)结束运行。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux 在线程中创建线程,在线程中等待线程
下一篇:使用JPA插入枚举类型字段
相关文章

 发表评论

暂时没有评论,来抢沙发吧~