取消pthread,但不是PTHREAD_CANCELED?

时间:2017-10-18 21:38:28

标签: c pthreads

在用pthread_cancel()取消一堆相同(相同功能)的pthread后,我等待它们停止并收集退出代码:

for(j = oldest; j < thCnt ; j++){
  pthread_join(thT[j], &ret); rc = (int)(intptr_t) ret;
}

大多数线程以ret == PTHREAD_CANCELED结尾,但其中一个没有,并且其rc是115390242(总是相同的值,即使“偏心”线程可能会改变)。从我用过的百万个printfs中详细跟踪这个,我很确定它们都抓住了pthread_testcancel(),那么为什么其中一个不能最终得到ret == PTHREAD_CANCELED? 任何人都有类似的怪事吗?

我在Linux下,使用PTHREAD_CANCEL_DEFERRED个线程。

0 个答案:

没有答案