Высоко приоритетный поток, как сделать? |
Здравствуйте, гость ( Вход | Регистрация )
Высоко приоритетный поток, как сделать? |
MishaUA |
30.9.2017, 20:11
Сообщение
#1
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Недавно создавал тему, в которой писал о подключении матричного индикатора.
Суть в том, что отрисовка должна происходить очень быстро, я ещё сделал в отдельном потоке (QThread в run), задержка там только одна на 50мкс, т.е., процесс потребляет довольно много процессорного времени, а конкретно - ~86% (проц 4 ядерный), это при QApplication, а с QCoreApplication было почему-то 100%, хоть в теории, QApplication потребляет больше ресурсов. Отрисовка изначально происходит нормально, но периодически (раз в пару мин) экран начинает мерцать, при этом нагрузка на том ядре падает примерно до 40% и через 2-5 сек мерцать перестает и до >80% нагружается совершенно другое ядро. Походу, процесс каким-то образом перепрыгнул на другое ядро. процесс запускаю как QThread::HighestPriority, а саму прогу с опцией nice --20 (хоть реально большой приоритет нужен не всей программе, а только одному процессу). Так же, мерцать всегда начинает когда захожу по ssh и логинюсь. Можно ли как-то сделать этот процесс со "сверхвысоким" приоритетом? Спасибо! |
|
|
Iron Bug |
12.10.2017, 21:21
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
ты что-то принципиально неправильное делаешь. система перерисовывает экран ровно столько раз, сколько нужно для его перерисовки. а ты пытаешься делать это между тактами перерисовки и это не нормальная работа с графикой. и нопы - это не выход. ты добился приблизительный результат на одной железке, при помощи подгона случайных величин. так только китайцы софт пишут. а правильно делать нормальный буфер и переключать буферы по событию.
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 4:20 |