你需要加入取消的帖子吗?(并行线程)

Joh*_*0te 5 c++ multithreading pthreads

当您使用PThreads取消时,我对清理订单有点困惑.通常,如果您的线程已分离,它会在终止时自动清除.如果它没有分离,则需要加入它以回收系统资源.

我正在阅读的教科书中陈述以下内容,奇怪的是,加入对于取消而言是可选的:

"如果你需要知道线程何时实际终止,你必须在取消后调用pthread_join加入它."

那么,我是否需要加入已取消的线程来释放其资源 - 如果没有,那么为什么呢?

cni*_*tar 6

TLPI说:

在接收到取消请求时,其可取消性被启用并且延迟的线程在其下一个到达取消点时终止.如果线程没有分离,那么进程中的其他一些线程必须与它连接,以防止它成为僵尸线程.

此外,由于取消线程通常不会立即完成(阅读更多关于"取消点")而不加入您无法确定该线程是否实际被取消.