在C中返回mutex_lock的顺序

时间:2016-03-05 11:04:49

标签: c linux mutex

让我们说有3个线程A,B和C. 和互斥量X

A在X上调用pthread_mutex_lock。

B在X上调用pthread_mutex_lock。

*

C在X上调用pthread_mutex_lock。

在X上调用pthread_mutex_unlock。

**

现在谁能够首先使用共享资源? B还是C? 如果我尝试在*中使用pthread_destroy_mutex会发生什么?在**?

1 个答案:

答案 0 :(得分:2)

Who will now be able to use the shared resource first?

这取决于内核调度程序的实现。 Posix这样说:

  

如果在互斥锁引用的互斥锁对象上阻塞了线程   当调用pthread_mutex_unlock()时,导致互斥锁变为   可用,调度策略应确定哪个线程   获得互斥锁。

And what happens if I try to use pthread_destroy_mutex in *? in **?

再次来自manual

  

尝试销毁锁定的互斥锁会导致未定义的行为。

如果您对这些问题有任何疑问,请咨询相关的手册页。