首页 > 解决方案 > QThread::start(优先级) vs Linux

问题描述

QThread在 KDE Neon 18.04 中使用了一些基于工作线程(基于 Ubuntu 18.04,内核 4.15.0-46-generic)。工作线程干扰了我的桌面应用程序,所以我决定降低它们的优先级。

Qt 文档QThread::start(priority)说:

优先级参数的效果取决于操作系统的调度策略。特别是,在不支持线程优先级的系统上,优先级将被忽略(例如在 Linux 上, 有关详细信息,请参阅http://linux.die.net/man/2/sched_setscheduler )。

阅读上述文档后,我预计优先级不会对我的 Linux 系统产生影响。我还是试了一下。你猜怎么着——它工作得很好。

那么,为什么 Qt 文档声明 Linux 上没有线程优先级?为什么它仍然有效?

标签: linuxqtqthreadthread-priority

解决方案


根据您使用的 Linux/Unix/*Nix 的风格,调度程序可能支持也可能不支持。据我所知,现在大多数 Linux 系统都支持 Qt 的大多数优先级,但不是所有的优先级。我怀疑文档说它不受支持,因此他们不需要列出支持优先级以及支持哪些级别的操作系统变体和调度程序变体的每个组合。

htop您可以通过使用ortop和处理来验证它是否具有正确的优先级awkhttps ://unix.stackexchange.com/questions/19301/what-is-a-command-to-find-priority-of-process-在Linux中


推荐阅读