gpt4 book ai didi

c - 为什么在尝试 pthread_mutex_destroy 时会出现 EBUSY?

转载 作者:太空宇宙 更新时间:2023-11-04 07:01:36 25 4
gpt4 key购买 nike

在退出之前,我按以下顺序从 main() 调用:

  1. pthread_cancel() 其他线程使用正在“等待”的 mtx(他们正在等待其他 cond_variable 和 mutex。也许这就是问题所在?
  2. pthread_cond_destroy(&cnd)(与 mtx“耦合”)
  3. pthread_mutex_unlock(&mtx)
  4. pthread_mutex_destroy(&mtx)

但是,最后一个函数的结果是 EBUSY。每次另一个线程使用互斥体时,它几乎立即释放它。另外,如前所述,我在尝试销毁互斥体之前杀死了所有这些线程。

为什么会这样?

最佳答案

根据man pthread_mutex_destroy:

The pthread_mutex_destroy() function may fail if:

EBUSY The implementation has detected an attempt to destroy the object referenced by mutex while it is locked or referenced (for example, while being used in a pthread_cond_timedwait() or pthread_cond_wait()) by another thread.

当您尝试销毁它时,请检查互斥量是否未被其他线程使用。

关于c - 为什么在尝试 pthread_mutex_destroy 时会出现 EBUSY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com