crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Управление приоритетом потока в Linux
ibnz
  опции профиля:
сообщение 28.1.2014, 15:22
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 28.9.2011
Пользователь №: 2916

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




Репутация:   0  


Есть в справке класса QThread такой абзац:

void QThread::start ( Priority priority = InheritPriority ) [slot]
Begins execution of the thread by calling run(), which should be reimplemented in a QThread subclass to contain your code. The operating system will schedule the thread according to the priority parameter. If the thread is already running, this function does nothing.
The effect of the priority parameter is dependent on the operating system's scheduling policy. In particular, the priority will be ignored on systems that do not support thread priorities (such as on Linux, see http://linux.die.net/man/2/sched_setscheduler for more details).

С линуксом пока на вы, и, сходив по ссылке, понял не многое.
Так можно ли управлять приоритетом потока в линуксе и можно ли это делать средствами Qt?

Конкретизируя вопрос, опишу стоящую задачу.
Есть GUI, существенно обновляющийся 30 раз в секунду.
И есть задача делать с него скриншоты раз в секунду.
Процесс конвертации в пнг занимает около 50 мс и в итоге раз в секунду плавный процесс отрисовки GUI подтормаживает на 1-2 обновления.

Планировал я решить следующим образом:
Код:


// поток с GUI 
    m_imgConverterThread = new QThread(this);
    m_imgConverter = new ImgConverter(this);
    m_imgConverter->moveToThread(m_imgConverterThread);
    m_imgConverterThread->start(QThread::IdlePriority);


Результат практически нулевой. Подтормаживания остались на месте.
Может какой-нибудь гуру укажет на верный дао?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ibnz
  опции профиля:
сообщение 28.1.2014, 16:51
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 28.9.2011
Пользователь №: 2916

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




Репутация:   0  


Моя частная проблема с подлагиванием решилась.
Ошибка была в том, что нельзя отправлять в поток объект с парентом.
m_imgConverter = new ImgConverter();

Все отлично работает и без изменения приоритета дочернего потока.

Но вопрос с изменением приоритетов потоков линуксе остается открытым.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 5.5.2024, 4:07