Russian Qt Forum
Ноябрь 02, 2024, 23:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QThread object destroyed while thread is still running  (Прочитано 12120 раз)
west
Гость
« : Февраль 09, 2008, 12:33 »

Смысл сообщения понятен, причина - тож. Неясно как найти место, потоков в приложении пускается очень много и разных. А бяка эта лезит нестабильно, под валгридом или gdb ее вообще не видно. Как бы ее поискать поэффективнее?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Февраль 09, 2008, 22:20 »

Найти место в Qt (~QThread() ) где выводиться это сообщение и поставить точку останова. Запустить прогу, точка сработает и далее посмотреть стек вызовов, при каких обстоятельствах это возникает. Этот как вариант Улыбающийся Далее сделать корректное завершение потока перед его удалением.
« Последнее редактирование: Февраль 09, 2008, 22:26 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
west
Гость
« Ответ #2 : Февраль 11, 2008, 12:02 »

Цитировать
и поставить точку останова
Цитировать
А бяка эта лезит нестабильно, под валгридом или gdb ее вообще не видно
- если в дебагере пускаться, то подобной проблемы не вознкает.  Во время работы приложения на стандартный вывод переодически выскакивает, причем повторяется от случая к случаю.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Февраль 11, 2008, 13:53 »

В таком случае нужно просто корректно завершить поток. В деструкторе своего класса потока дописать примерно такй код:

Код:
...

if (!isRunning())
    return;

    //завершение потока   

    wait();

....
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
west
Гость
« Ответ #4 : Февраль 14, 2008, 09:11 »

Да это все понятно, и даже уже написанно.
Записан
skydion
Гость
« Ответ #5 : Март 12, 2010, 11:13 »

И как побороли эту фигню? У меня приблизительно тоже самое  Непонимающий

Завершаю поток при выходе из программы, а потом сама програма висит,
не завершается, хотя по отладочным сообщениям поток завершился...
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Март 12, 2010, 14:39 »

Покажи код потока и как ты его завершаешь
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
skydion
Гость
« Ответ #7 : Март 12, 2010, 16:25 »

Спасибо за отзыв, проблемку решил.
Неправильно убивал поток...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.