2

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 池。

4

1 回答 1

1

不。

如果您需要使用 pthreads 实现此功能,则必须以某种方式自己实现跟踪。

于 2013-05-27T13:36:53.920 回答