【发布时间】:2016-05-22 09:04:10
【问题描述】:
就在退出之前,我按以下顺序从main() 呼叫:
-
pthread_cancel()其他线程使用mtx正在“等待”(他们正在等待其他 cond_variable 和 mutex。也许这就是问题所在? -
pthread_cond_destroy(&cnd)(与mtx“耦合”) pthread_mutex_unlock(&mtx)pthread_mutex_destroy(&mtx)
但是,最后一个函数的结果是EBUSY。每次另一个线程使用互斥体时,它几乎都会立即释放它。另外,如前所述,我在尝试销毁互斥体之前杀死了所有这些线程。
为什么会这样?
【问题讨论】:
-
为什么只在一个线程上使用互斥锁?也许只是为了放慢速度!
-
@EdHeal,请参阅编辑。
-
被取消运行的线程是否分离?如果没有,代码是否加入了他们?
-
有没有更优雅的方式来终止线程而不是杀死它们
-
我不加入他们,因为他们表现得像工人一样,当队列为空时会进入睡眠状态。
标签: c multithreading posix