yan*_*nce 2 qt multithreading mutex qmutex
我有一个函数,它是类的一部分,在这个函数中,在函数的开头有一个mutex.lock,在它返回之前有一个mutex.unlock.现在我遇到了互斥锁卡在锁定状态的情况.如果这个函数是我使用该互斥锁来锁定和解锁的唯一地方,那么可以做什么呢.该函数从主线程和1或2个其他QThreads调用.
更新:问题是由于线程没有在函数调用之间休眠.也许缺乏睡眠很快就重新锁定了互斥锁?你也可以调用yieldCurrentThread();
如果函数中抛出异常unlock(),则最终可能无法执行.为了确保QMutex在这种情况下解锁,您可以使用QMutexLocker对象进行锁定.当对象被破坏时,该对象将自动解锁互斥锁,即使在异常后的堆栈展开期间发生这种情况也是如此.