Столкнулся с такой проблемой.
Есть приложение, представляющее из себя некий upload-менеджер файлов.
1) Есть основной поток приложения, который отрисовывает GUI и создает задания на исполнение.
2) Есть второй поток, который обрабатывает очередь заданий.
3) Задание представляет собой набор файлов, которые нужно отправить на удаленный сервер и после этого переместить их в другой каталог.
Второй поток крутится в event-loop'е по exec(). По приходу задания через слот организуется цикл по всем файлам, "хавая" их пачками по несколько штук (задается пользователем, указано 4) и для каждого файла из этой пачки создается QFuture, каждая из которых собственно и занимается отправкой/перемещением.
Очередное задание включает в себя несколько тысяч файлов. Все работает прекрасно, я наблюдаю за процессом (бегает лог и т.п.) минут 20, смотрю туда, сюда, тыкаю мышкой, довольный иду пить чай.
Прихожу минут через 20 и наблюдаю печальную картину: лог не бегает, хотя GUI не висит. Так как все запущено под отладчиком, делаю паузу, смотрю на точки останова в процессах, куда меня закинуло, запускаю вновь, и так несколько раз. После очередного пинка поток просыпается.
Научите в чем проблема и как ее избежать.
P.S. Windows 7 в VirtualBox'е под Linux, который заблокировал экран из-за бездействия, но полагаю, что дело не в этом, а в том, что приложение перестало получать события.
Здравствуйте, SaZ, Вы писали:
SaZ>Здравствуйте, sergiok, Вы писали:
S>>Всем спасибо, все решилось.
SaZ>Рассказали бы, как решали.
Проблема оказалась не там, где я ее искал.
Программа отправляла по SFTP файлы, и когда этих файлов в пределах одной сессии получалось больше определенного количества, соединение повисало.
Возможно, это какие-то ограничения на сервере, а возможно и я не совсем правильно понял, как нужно работать с библиотекой libssh2.
Решилось тупым реконнектом при наборе определенного числа файлов через одно соединение (поставил 500 и проблемы ушли).