面试题:如何优雅的在主线程中结束一个从线程?:
假如现在一个线程阻塞了,主线程要结束点从线程,怎么办?
—回答:调用pthread_cancel()终止它
线程的退出方式:
1. 从线程函数中return(不适合主线程);
2. 调用pthead_exit()函数终止自己;
3. 调用pthread_cancel终止同一进程中的其他线程。
线程等待:pthread_join(pthread_t thread, void **value_ptr):调用pthread_join的线程将会以阻塞的方式等待thread线程,直到thread线程终止,value_ptr是个输入输出型参数;thread线程不同的终止方式,pthread_join得到的终止状态是不同的。如果不管thead线程的终止方式,value_ptr 这个参数传NULL;
线程分离: pthread_detach(pthread_t thread);
为什么要线程分离?:创建一个线程默认是可结合的,可结合的线程可以被其他线程杀死,资源也可以被其他线程回收,但是如果程序员忘了回收,那么他就不能释放资源,造成资源泄漏;当我们设置自为可分离的之后; 该线程就不能被其他线程杀死或者回收资源;等到自己终止以后,资源被系统回收。