【问题标题】:Is there a way to set thread priority in Glib v2.32+?有没有办法在 Glib v2.32+ 中设置线程优先级?
【发布时间】:2012-09-07 22:44:39
【问题描述】:

Glib 2.30 API 允许通过 GThreadPriority 枚举设置线程优先级。但是,该 API 是 deprecated as of 2.32,我找不到任何有关使用新 API 设置线程优先级的信息。我在API refrence 中所有与线程相关的部分都按Ctrl+F,但没有发现任何与优先级相关的内容。 Google 似乎也一无所知。

那么在 2.32 API 中是否可以为线程分配优先级?如果是,如何在创建时执行它,是否可以在创建线程后更改它?我知道 pthread 支持所有这些,但我更愿意坚持使用独立于平台的 Glib API。

【问题讨论】:

    标签: linux multithreading cross-platform glib multiplatform


    【解决方案1】:

    设置线程优先级已不复存在。在 glib 中的 git log this commit 解释了原因

    GThread:弃用线程优先级

    线程优先级已被记录为在 Solaris 上不起作用,它们在 Linux 上毫无意义,除非进程单独请求实时调度(即使那样,它似乎也只能以 root 身份工作)。

    也许使用线程池和g_thread_pool_set_sort_function () 可以吗?

    【讨论】:

    • 感谢您指出提交!在我看来,如果我通过 g_thread_pool_set_max_threads () 限制池中的最大线程数,g_thread_pool_set_sort_function () 只会暂停一些线程。它不会优先考虑它们的资源分配或类似的事情。在某些情况下它可能很有用,尽管实际的优先级会很好。也许我应该研究一下纤维……
    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多