Сбой при создании QMutexLocker из дочернего QThread
У меня есть QMutex и QQueue в качестве члена в классе, основанном на QThread. Я блокирую QMutex (от QMutexLocker) в методах popEvent и pushEvent. Когда я блокирую его в методе push, вызванном из основного потока, он работает. Когда я вызываю функцию pop из цикла дочернего потока, происходит сбой при создании QMutexLock. В чем дело? Должны ли QMutex и QQueue быть глобальными или статическими? Класс на основе QThread создается в куче основного потока (куча, а не стек).
1 ответ
Мьютекс "принадлежит" потоку, который его содержит. Он не может быть освобожден другим потоком. Вы, вероятно, хотите семафор, а не мьютекс.