POSIX threads中joinable和detached线程的区别
POSIX threads中joinable和detached线程的区别
JoshuaPOSIX threads中joinable和detached线程的区别
创建方式
这里都以Linux下的实现为例,进行说明。
joinable的创建方式
posix thread默认创建出来的线程就是joinable方式,所以创建方式十分简单
|
detached线程创建方式
需要在thread_create
的时候传入一下特殊的标志。
|
区别
detached线程的特点是,当一个detached线程终止时,它的资源可以立即释放,而不需要等待其它线程调用pthread_join
之后才能释放资源。
简而言之,创建一个detached线程意味着你不需要等待它的完成,并且它的资源可以在线程终止时立即释放,而不需要等待其他线程的合并操作。在一些情况下可能带来性能上的改进,特别是当你知道你不需要调用pthread_join
去等待线程完成,thread结束后可以立即释放它所占用的资源时。
相反joinable的线程即使结束了也不会释放资源,它需要一直等到有人调用了pthread_join
之后,在完成时才会被释放。这意味着如果一个joinable线程你创建之后,不调用pthread_join
,它将会永远的无法被释放,直到程序退出,被系统强行清理。