【发布时间】:2021-06-02 14:37:34
【问题描述】:
我当前的任务是处理多线程的生产者/消费者问题。我目前已经实现了生产者-消费者问题,但是,分配还有另一部分我们必须模拟我们的线程崩溃。显然这是通过调用pthread_exit(NULL); 来完成的。我得到了使用 pthread_tryjoin_np() 的提示,但我似乎无法让它工作。
我目前与pthread_tryjoin_np() 加入的实现是:
for(i = 0; i < numThread; i++) {
if(pthread_tryjoin_np(th[i], NULL) != 0) {
pthread_create(&th[i], NULL, &consumer, NULL);
}
}
我不确定我是否错误地使用了pthread_tryjoin_np(),但使用pthread_tryjoin_np() 或其他解决方案的修复会很棒。
【问题讨论】:
-
教师似乎不理解他们试图教授的 API。线程不会崩溃。如果一个线程执行了一些生成未处理的致命信号的操作,则 进程 将终止。 “检查我们的线程是否崩溃并重新启动它”作为操作毫无意义。除非您选择退出,否则您的线程无法退出。