Улучшение отзывчивости многопотчонной программы |
Здравствуйте, гость ( Вход | Регистрация )
Улучшение отзывчивости многопотчонной программы |
RazrFalcon |
11.11.2011, 18:25
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Есть GUI который создает еще 2-а потока (всего ядер на компе 2-а).
При этом, потоки полностью самостоятельные, и посылают главному потоку только сигналы о прогрессе и когда нужно создать новое привью. Привью создается так: создается класс-виджет и добавляется в FlowLayout. Больше главный поток ничего не делает. Но, при работе потоков, GUI пользоваться не возможно. Он тупо не откликается на нажатия. Хотя через время все таки реагирует. Вопрос: как увеличить отзывчивость GUI? Нужно что бы дочерние потоки совершенно не влияли на работу главного. |
|
|
silver47 |
11.11.2011, 18:42
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Тоже такое встретил. Не знаю как объяснить. Запускаю поток на выполнение с помошью QtConcurrent. В том смысле, что вызываю метод start потока через QtConcurrent.
Сообщение отредактировал silver47 - 11.11.2011, 18:43 |
|
|
RazrFalcon |
11.11.2011, 18:49
Сообщение
#3
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Я создаю QThread. Затем создаю свой класс (не знаю как это правильно называется ), то есть:
а затем:
|
|
|
silver47 |
11.11.2011, 19:52
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Если не будет других советов, то запускайте каждый из своих потоков чере QtConncurent, думаю поможет, но думаю, что неправильно, но другого пути не знаю. У меня такая ситуация, например с COM портами, если они виртуальные и транслируются через интернет, то велика веротность, что при низкой скорости порт будет открываться \ закрываться продолжительное время. На это время GUI виснет, вот это я не смог победить даже через QtConncurent
Сообщение отредактировал silver47 - 11.11.2011, 19:54 |
|
|
DOGG |
14.11.2011, 10:41
Сообщение
#5
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Можно попробовать при запуске потоков, которые не работают с интерфейсом, назначить им приоритет ниже среднего.
Сообщение отредактировал DOGG - 14.11.2011, 10:42 |
|
|
RazrFalcon |
14.11.2011, 15:32
Сообщение
#6
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Можно попробовать при запуске потоков, которые не работают с интерфейсом, назначить им приоритет ниже среднего. Это только в винде. В Linux приоритеты только от рута, вроде. Наткнулся на хорошую статью: http://doc.qt.nokia.com/qq/qq27-responsive-guis.html |
|
|
Текстовая версия | Сейчас: 23.11.2024, 1:55 |