Как запустить QThread чтобы он не вешал GUI? |
Здравствуйте, гость ( Вход | Регистрация )
Как запустить QThread чтобы он не вешал GUI? |
flareguner |
8.3.2010, 22:44
Сообщение
#21
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
BRE |
8.3.2010, 22:46
Сообщение
#22
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Если речь о новом процессе, то какая разница? Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще. А разве не run()-ом я его запускаю в файле video_converter.cpp? run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start(). |
|
|
flareguner |
8.3.2010, 22:46
Сообщение
#23
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата Что если запустить mencoder через утилиту nice, с пониженным приоритетом? Да еще и QThread setPriority() пониже выставить? Это тоже мысль. Сейчас опробую. |
|
|
SABROG |
8.3.2010, 22:51
Сообщение
#24
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Всё, нашел:
flareguner, я ж просил все исходники выложить. Вторую ссылку не заметил Цитата Это тоже мысль. Сейчас опробую. Да не поможет. Твоя проблема в waitForFinished(), он блокирует основной цикл событий, так как ты запустил поток через run(), а не через start(). |
|
|
flareguner |
8.3.2010, 22:55
Сообщение
#25
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
Если речь о новом процессе, то какая разница? Камрад flareguner запускает новый поток вызовом метода run, т.е. новый поток не создается вообще. А разве не run()-ом я его запускаю в файле video_converter.cpp? run это тело потока, а для того что бы он запустился в отдельном потоке, нужно его запускать через start(). Вот это я облажался. Ну что же, больше всем вам спасибо что помогли и не поленились разгребать пионерский г-нокод. |
|
|
DEADHUNT |
8.3.2010, 22:57
Сообщение
#26
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
|
|
|
SABROG |
8.3.2010, 23:06
Сообщение
#27
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
это уже не запуск, а простой вызов метода. только тогда не понятно зачем QThread использовать. Так и есть. Интересно почему тролли не поместили метод run() в protected секцию, тогда бы можно было бы его спокойно наследовать и при этом невозможно было бы его вызвать за пределами класса QThread и наследников, а только через start(). Брр, ничего не понимаю, он в protected секции. Почему-то его возможно вызвать ? Ой, кое-кто его вытащил "наружу":
Вопрос к знатокам C++, возможно ли создать класс с protected членами, которым бы невозможно было бы поменять спецификатор доступа при наследовании? Теоретически можно сделать run() чистой виртуальной функцией с private спецификатором доступа. Вот только наследование от QObject'a может не дать это сделать. Сообщение отредактировал SABROG - 8.3.2010, 23:37 |
|
|
flareguner |
9.3.2010, 0:01
Сообщение
#28
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
это уже не запуск, а простой вызов метода. только тогда не понятно зачем QThread использовать. Так и есть. Интересно почему тролли не поместили метод run() в protected секцию, тогда бы можно было бы его спокойно наследовать и при этом невозможно было бы его вызвать за пределами класса QThread и наследников, а только через start(). Брр, ничего не понимаю, он в protected секции. Почему-то его возможно вызвать ? Ой, кое-кто его вытащил "наружу":
Вопрос к знатокам C++, возможно ли создать класс с protected членами, которым бы невозможно было бы поменять спецификатор доступа при наследовании? Теоретически можно сделать run() чистой виртуальной функцией с private спецификатором доступа. Вот только наследование от QObject'a может не дать это сделать. вроде макрос Q_OBJECT делает что-то подобное. |
|
|
SABROG |
9.3.2010, 0:18
Сообщение
#29
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
flareguner |
9.3.2010, 0:45
Сообщение
#30
|
Студент Группа: Участник Сообщений: 21 Регистрация: 16.11.2009 Пользователь №: 1231 Спасибо сказали: 0 раз(а) Репутация: 0 |
вроде макрос Q_OBJECT делает что-то подобное. Если тролли поменяют объявление метода run() на такое, то возможно ошибок будет меньше:
Может я что-то путаю, но разве можно в дочернем классе переопределять private-элементы? Вроде бы только protected. |
|
|
Текстовая версия | Сейчас: 30.11.2024, 5:14 |