Приоритет выполнения QThread

Автор: | 25 июля, 2019

При запуске QThread методом start() можно указать приоритет его выполнение. Приоритет определяет приоритетность выполнения потока по отношению к другим потокам. Каждый приоритет сопоставим с числом и начинается от 0 до 7.

Приоритеты QThread

Рассмотрим все варианты начиная от 0 и заканчивая 7:

QThread :: IdlePriority0Запланирован, только когда другие потоки не запущены
QThread :: LowestPriority1Запланирован реже, чем LowPriority
QThread :: LowPriority2Запланирован реже, чем NormalPriority
QThread :: NormalPriority3Приоритет по умолчанию для операционной системы
QThread :: HighPriority4Запланирован чаще, чем NormalPriority
QThread :: HighestPriority5Запланирован чаще, чем HighPriority
QThread :: TimeCriticalPriority6Запланирован как можно чаще
QThread :: InheritPriority7Использует тот же приоритет, что и поток создания. Это значение по умолчанию
Приоритеты

Для запуска потока с нужным приоритетом, необходимо указать его в методе start(QThread ::Priority)

  Worker thread;
  thread.start(QThread :: HighPriority);

Так же можно указать приоритет методом setPriority()

Worker thread;
thread.setPriority(QThread::LowestPriority);

Для определения с каким приоритетом был запущен поток можно вызвать priority()

Worker thread;
thread.priority();