crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как запустить 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  


Цитата(BRE @ 8.3.2010, 22:35) *
Так я и думал, новый поток запускается через start(). :)


У QThread другого и нету :blink:

Если речь о новом процессе, то какая разница?

А у меня такая еще идея появилась. Дочерний процесс настолько сильно грузит процессор (все-таки ни что нибудь, а перекодирование!), что забирает все ресурсы и у родительского процесса. Что если запустить mencoder через утилиту nice, с пониженным приоритетом? Да еще и QThread setPriority() пониже выставить?

Сообщение отредактировал SABROG - 8.3.2010, 22:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.3.2010, 22:46
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(SABROG @ 8.3.2010, 22:42) *
Если речь о новом процессе, то какая разница?

Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще.


Цитата(flareguner @ 8.3.2010, 22:44) *
А разве не run()-ом я его запускаю в файле video_converter.cpp? :rolleyes:

run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start().
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flareguner
  опции профиля:
сообщение 8.3.2010, 22:55
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 16.11.2009
Пользователь №: 1231

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BRE @ 8.3.2010, 22:46) *
Цитата(SABROG @ 8.3.2010, 22:42) *
Если речь о новом процессе, то какая разница?

Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще.


Цитата(flareguner @ 8.3.2010, 22:44) *
А разве не run()-ом я его запускаю в файле video_converter.cpp? :rolleyes:

run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start().



Вот это я облажался. Ну что же, больше всем вам спасибо что помогли и не поленились разгребать пионерский г-нокод. :clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- flareguner   Как запустить QThread чтобы он не вешал GUI?   8.3.2010, 17:53
- - SABROG   Я конечно могу задавать наводящие вопросы, типа ...   8.3.2010, 20:01
|- - flareguner   Цитата(SABROG @ 8.3.2010, 20:01) Я конечн...   8.3.2010, 21:17
- - DEADHUNT   QProcess::waitForStarted добавь и посмотри что от ...   8.3.2010, 21:48
|- - flareguner   Цитата(DEADHUNT @ 8.3.2010, 21:48) QProce...   8.3.2010, 21:55
- - SABROG   Не увидел ничего такого, что бы могло вешать GUI. ...   8.3.2010, 21:50
|- - flareguner   Цитата(SABROG @ 8.3.2010, 21:50) Не увиде...   8.3.2010, 22:02
- - DEADHUNT   Цитата(flareguner @ 8.3.2010, 21:55) Подр...   8.3.2010, 21:57
|- - SABROG   Цитата(DEADHUNT @ 8.3.2010, 21:57) Цитата...   8.3.2010, 22:04
||- - flareguner   Цитата(SABROG @ 8.3.2010, 22:04) Цитата(D...   8.3.2010, 22:20
|- - flareguner   Цитата(DEADHUNT @ 8.3.2010, 21:57) Цитата...   8.3.2010, 22:05
- - BRE   Расскажи, что значит "вешается GUI"? Дл...   8.3.2010, 22:07
- - SABROG   BRE прав, тебе нужно определиться, хочешь ли ты во...   8.3.2010, 22:13
- - SABROG   Цитата(flareguner @ 8.3.2010, 22:18) Но с...   8.3.2010, 22:22
- - flareguner   Цитата(SABROG @ 8.3.2010, 22:22) Цитата(f...   8.3.2010, 22:24
- - BRE   А покажи код, который запускает этот поток + как о...   8.3.2010, 22:28
|- - flareguner   Цитата(BRE @ 8.3.2010, 22:28) А покажи ко...   8.3.2010, 22:34
- - SABROG   Проверь управление доходит до строчки идущей за wa...   8.3.2010, 22:29
- - BRE   Так я и думал, новый поток запускается через start...   8.3.2010, 22:35
|- - flareguner   Цитата(BRE @ 8.3.2010, 22:35) Так я и дум...   8.3.2010, 22:44
- - SABROG   Цитата(BRE @ 8.3.2010, 22:35) Так я и дум...   8.3.2010, 22:42
|- - BRE   Цитата(SABROG @ 8.3.2010, 22:42) Если реч...   8.3.2010, 22:46
|- - flareguner   Цитата(BRE @ 8.3.2010, 22:46) Цитата(SABR...   8.3.2010, 22:55
- - flareguner   ЦитатаЧто если запустить mencoder через утилиту ni...   8.3.2010, 22:46
- - SABROG   Всё, нашел: processor->setArguments( sta...   8.3.2010, 22:51
- - DEADHUNT   Цитата(SABROG @ 8.3.2010, 22:51) так как ...   8.3.2010, 22:57
- - SABROG   Цитата(DEADHUNT @ 8.3.2010, 22:57) это уж...   8.3.2010, 23:06
|- - flareguner   Цитата(SABROG @ 8.3.2010, 23:06) Цитата(D...   9.3.2010, 0:01
- - SABROG   Цитата(flareguner @ 9.3.2010, 0:01) вроде...   9.3.2010, 0:18
- - flareguner   Цитата(SABROG @ 9.3.2010, 0:18) Цитата(fl...   9.3.2010, 0:45
- - SABROG   Цитата(flareguner @ 9.3.2010, 0:45) Может...   9.3.2010, 0:56


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


11 чел. читают эту тему (гостей: 11, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 3:26