1

我有 QMutex 和 QQueue 作为基于 QThread 的类的成员。我在 popEvent 和 pushEvent 方法中锁定 QMutex(通过 QMutexLocker)。当我将它锁定在从主线程调用的 push 方法中时,它可以工作。当我从子线程循环调用 pop 函数时,它在创建 QMutexLock 时崩溃。怎么了?QMutex 和 QQueue 应该是全局的还是静态的?基于 QThread 的类是在主线程堆(堆而不是堆栈)上创建的。

4

1 回答 1

0

互斥锁由持有它的线程“拥有”。它不能被另一个线程释放。你可能想要一个信号量,而不是一个互斥体。

于 2018-03-01T19:59:57.580 回答