QThread :: start (приоритет) по сравнению с Linux - PullRequest
2 голосов
/ 20 марта 2019

Я использую несколько рабочих потоков на основе QThread в KDE Neon 18.04 (на основе Ubuntu 18.04, Kernel 4.15.0-46-generic).Рабочие потоки мешали моим настольным приложениям, поэтому я решил уменьшить их приоритет.

Документация Qt QThread::start(priority) гласит:

Эффект параметра priority зависит от политики планирования операционной системы.В частности, приоритет будет игнорироваться в системах, которые не поддерживают приоритеты потоков (например, в Linux, см. http://linux.die.net/man/2/sched_setscheduler для получения более подробной информации).

После прочтения вышеуказанной документации я ожидалприоритеты не будут влиять на мою систему Linux.Тем не менее я дал ему попробовать.И угадайте, что - это сработало отлично.

Итак, почему документация Qt утверждает, что в Linux нет приоритетов потоков?И почему это все равно работает?

1 Ответ

2 голосов
/ 20 марта 2019

В зависимости от того, какой тип Linux / Unix / * Nix вы используете, планировщик может поддерживать его или не поддерживать. Насколько я знаю, большинство уровней приоритетов Qt теперь поддерживаются на большинстве систем Linux, но не на всех уровнях приоритетов. Я подозреваю, что в документации сказано, что она не поддерживается, поэтому им не нужно перечислять каждую комбинацию варианта ОС и варианта планировщика, которые поддерживают уровни приоритета и какие уровни поддерживаются.

Вы можете проверить, что он создал его с правильным приоритетом, используя htop или top и обрабатывая с помощью awk: https://unix.stackexchange.com/questions/19301/what-is-a-command-to-find-priority-of-process-in-linux

...