Есть класс, у которого в конструкторе навешан обработчик на чтение некоторых данных.
Есть у класса деструктор, который вызывается в рандомное время(зависит от пользователя). Проблема в следующем, сам класс с этим обработчиком находится в гуи потоке, когда срабатывает сигнал, обработчик на сколько я понимаю отрабатывает уже не в гуишном потоке и того получаем 2 потока. Так вот, поставил локер, пока поток от слота не отработает, ожидать в деструкторе завершения работы слота. Но в слоте присутствует QEventLoop для паузы, и вот по непонятным мне причинам, когда я делаю QMutexLocker lockers(&_mtx);, поток с обработчиком(слотом) просто замирает, а замирает на паузе которая сделана через QEventLoop. Я так предполагаю я залочил поток со слотом, подскажите как быть. Просьба сильно не пинать, только начинаю разбираться с многопоточностью.
Пауза выглядит так:
void sleep(int ms)
{
QEventLoop *loop = new QEventLoop;
QTimer::singleShot(ms, loop, SLOT(quit()));
loop->exec();
}