【问题标题】:setpriority impact on QProcesssetpriority 对 QProcess 的影响
【发布时间】:2016-02-17 00:39:17
【问题描述】:

我有一个 C++/Qt5 程序,它使用 setpriority() 设置进程的优先级。该进程使用 QProcess 启动多个可执行程序。

QProcess 启动的程序会以主进程的 NEW 优先级运行吗?或者 QProcess 是否将它们的优先级设置为 0?

【问题讨论】:

    标签: c++ qt qprocess nice


    【解决方案1】:

    你说的是 QProcesses 还是 QThreads? QProcess 没有setPriority,但QThread::setPriority 有。这会影响 pthread 调度策略,即 by default 继承给子线程。

    至于 QProcess,至少在 *nix 中它是一个常规的 fork(),它保留了它在调用期间的 niceness 值。所以如果你修改主进程,这个值会被传递给子进程。

    【讨论】:

    • 我正在使用 setprocess 设置主进程的优先级(来自 。然后我使用 QProcess 启动另一个进程。这是在 linux 下运行的。奇怪的是,当我设置主进程优先级为 -3,随后启动的 QProcesses 优先级为 0。我认为它是一个 FORK(继承优先级),但它似乎不是,这很奇怪。
    • 也许您没有将优先级提高到 0 以下的权限?这将是默认设置。检查setprocess的返回值。
    • 我可以将主进程的优先级更改为-3(它以root身份运行),所以这不是问题。我只是不明白为什么启动的 QProcesses 以 0 的优先级运行。它们应该以 prio -3 运行(假设它们只是从主进程分叉和跨越)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2016-11-06
    • 2012-06-12
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多