使用递归pthread互斥锁时发生死锁

时间:2020-11-06 11:17:12

标签: c++ pthreads mutex deadlock

其中一个类(命名为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互斥锁的消息时,就会发生死锁。此后,这些线程不再有日志。

有人知道吗,为什么会发生?

0 个答案:

没有答案
相关问题