26、怎么回收线程?有哪几种方法?

等待线程结束:int pthread_join(pthread_t tid, void** retval);

主线程调用,等待子线程退出并回收其资源,类似于进程中wait/waitpid回收僵尸进程,调用 pthread_join的线程会被阻塞。

tid:创建线程时通过指针得到tid值。

retval:指向返回值的指针。

 

结束线程:pthread_exit(void *retval);

子线程执行,用来结束当前线程并通过retval传递返回值,该返回值可通过pthread_join获得。

retval:同上。

 

分离线程:int pthread_detach(pthread_t tid);

主线程、子线程均可调用。主线程中pthread_detach(tid),子线程中pthread_detach(pthread_self()),调 用后和主线程分离,子线程结束时自己立即回收资源。

tid:同上。

 

上一篇:9,线程同步


下一篇:Linux系统编程 多线程