Как запустить QThread чтобы он не вешал GUI? |
Здравствуйте, гость ( Вход | Регистрация )
Как запустить QThread чтобы он не вешал GUI? |
flareguner |
8.3.2010, 17:53
Сообщение
#1
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я пробовал сделать так, как в примере в документации. Унаследовал QThread в классе и переопределил функцию void run(). Затем в другом приложении создал объект этого своего класса и запускаю его. GUI вешается и почти не отзывается. Большое спасибо тем, кто ответит.
Чуть не забыл: в классе наследующем поток мы ждем выполнения QProcess с waitForFinished( -1 ). |
|
|
SABROG |
8.3.2010, 22:42
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Так я и думал, новый поток запускается через start(). У QThread другого и нету Если речь о новом процессе, то какая разница? А у меня такая еще идея появилась. Дочерний процесс настолько сильно грузит процессор (все-таки ни что нибудь, а перекодирование!), что забирает все ресурсы и у родительского процесса. Что если запустить mencoder через утилиту nice, с пониженным приоритетом? Да еще и QThread setPriority() пониже выставить? Сообщение отредактировал SABROG - 8.3.2010, 22:44 |
|
|
BRE |
8.3.2010, 22:46
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Если речь о новом процессе, то какая разница? Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще. А разве не run()-ом я его запускаю в файле video_converter.cpp? run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start(). |
|
|
flareguner |
8.3.2010, 22:55
Сообщение
#4
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
Если речь о новом процессе, то какая разница? Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще. А разве не run()-ом я его запускаю в файле video_converter.cpp? run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start(). Вот это я облажался. Ну что же, больше всем вам спасибо что помогли и не поленились разгребать пионерский г-нокод. |
|
|
Текстовая версия | Сейчас: 30.11.2024, 3:26 |