从子QThread创建QMutexLocker崩溃

问题描述 投票:0回答:1

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

multithreading qt5 qmutex
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.