Засыпание потоков со временем
От: sergiok  
Дата: 14.10.13 23:09
Оценка:
Всем привет!

Столкнулся с такой проблемой.
Есть приложение, представляющее из себя некий upload-менеджер файлов.
1) Есть основной поток приложения, который отрисовывает GUI и создает задания на исполнение.
2) Есть второй поток, который обрабатывает очередь заданий.
3) Задание представляет собой набор файлов, которые нужно отправить на удаленный сервер и после этого переместить их в другой каталог.

Второй поток крутится в event-loop'е по exec(). По приходу задания через слот организуется цикл по всем файлам, "хавая" их пачками по несколько штук (задается пользователем, указано 4) и для каждого файла из этой пачки создается QFuture, каждая из которых собственно и занимается отправкой/перемещением.

Очередное задание включает в себя несколько тысяч файлов. Все работает прекрасно, я наблюдаю за процессом (бегает лог и т.п.) минут 20, смотрю туда, сюда, тыкаю мышкой, довольный иду пить чай.
Прихожу минут через 20 и наблюдаю печальную картину: лог не бегает, хотя GUI не висит. Так как все запущено под отладчиком, делаю паузу, смотрю на точки останова в процессах, куда меня закинуло, запускаю вновь, и так несколько раз. После очередного пинка поток просыпается.

Научите в чем проблема и как ее избежать.

P.S. Windows 7 в VirtualBox'е под Linux, который заблокировал экран из-за бездействия, но полагаю, что дело не в этом, а в том, что приложение перестало получать события.
Re: Засыпание потоков со временем
От: sergiok  
Дата: 16.10.13 10:13
Оценка:
Всем спасибо, все решилось.
Re[2]: Засыпание потоков со временем
От: SaZ  
Дата: 17.10.13 12:25
Оценка:
Здравствуйте, sergiok, Вы писали:

S>Всем спасибо, все решилось.


Рассказали бы, как решали.
Re[3]: Засыпание потоков со временем
От: sergiok  
Дата: 27.10.13 19:35
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>Здравствуйте, sergiok, Вы писали:


S>>Всем спасибо, все решилось.


SaZ>Рассказали бы, как решали.


Проблема оказалась не там, где я ее искал.
Программа отправляла по SFTP файлы, и когда этих файлов в пределах одной сессии получалось больше определенного количества, соединение повисало.
Возможно, это какие-то ограничения на сервере, а возможно и я не совсем правильно понял, как нужно работать с библиотекой libssh2.
Решилось тупым реконнектом при наборе определенного числа файлов через одно соединение (поставил 500 и проблемы ушли).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.