Re[2]: Прерывание потока во время выполнения
От: andrey-x86  
Дата: 11.06.13 13:13
Оценка:
Здравствуйте, Karbofos, Вы писали:

K>Здравствуйте, andrey-x86, Вы писали:


AX>>Таким образом, возникает вопрос: что я делаю не так, либо чего я не учитываю?


K>Такое поведение обычно возникает когда запускается вложенный EventLoop.

K>Посмотрите, нет ли у вас в коде foo() или в вызываемых им функциях явного вызова QEventLoop::exec() либо метода XXX::processEvents(), где XXX = QEventLoop, QApplication или QCoreApplication. Скорее всего что-то подобное найдется.
K>Вообще, лучше избегать вложенных EventLoop. Но если это действительно необходимо, то проблему дедлока можно обойти создав mutex с параметром RecursionMode = Recursive. Однако, при этом можно получить несколько других проблем.

Действительно, так и оказалось. QXmlQuery запускает внутри одного метода event loop, и появляются эти глюки. Обходное решение -- сгрузить этот кусочек работы в отдельный поток, который уже не будет получать события, предназначенные для исходного. После этого все заработало, как надо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.