pthread_quit 似乎没有在 MACOSX 上实现,所以现在我正在寻找一种替代方法来测试线程是否仍在运行,有没有简单的方法可以做到这一点?
目前
void GarbageCollector() {
while(true) {
list_t* dummy=takenThreads;
while(dummy->next!=NULL) {
if(pthread_kill(dummy->next->value,0)!=0) {
AddToEnd(RemoveNextFromList(dummy),freeThreads);
fprintf(stderr, "%s\n", "THREAD DELETED\n");
continue;
}
dummy=dummy->next;
}
}
}
从上面的代码中,我调用值为 0 的 pthread_kill 来查看线程是否仍在运行,如果没有,我将其从 takeThreads 移动到 freeThread 池。