从子QThread创建QMutexLocker崩溃

时间:2018-03-01 11:07:25

标签: multithreading qt5 qmutex

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

1 个答案:

答案 0 :(得分:0)

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