其中一个类(命名为C1)使用以PTHREAD_MUTEX_RECURSIVE_NP类型初始化的pthread互斥量。 它具有以下功能:
C1::F1()
{
<some code 1>
<log about mutex lock>
<mutex lock>
<some code 2>
<mutex unlock>
<log about unlock>
<some code 3>
}
C1::lock()
{
<log about mutex lock>
<mutex lock>
}
C1::unlock()
{
<log about mutex unlock>
<mutex unlock>
}
线程1使用C1 :: F1,线程2-C1 :: lock和C1 :: unlock(),从另一个类调用。 当我在日志中同时看到有关C1:F1和C1 :: lock互斥锁的消息时,就会发生死锁。此后,这些线程不再有日志。
有人知道吗,为什么会发生?