一尘不染

在Linux(pthreads)上等效于SetThreadPriority

linux

给出以下代码,我想知道假设pthreads甚至使用Boost.Thread API在linux中等效的代码是什么。

#include <windows.h>

int main()
{
   SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST);
   return 0;
}

阅读 482

收藏
2020-06-07

共1个答案

一尘不染

相当于SetThreadPrioritylinux中的pthread_setschedprio(pthread_t thread, int priority)

检查手册页

编辑:这是等效的示例代码:

#include <pthread.h>

int main()
{
    pthread_t thId = pthread_self();
    pthread_attr_t thAttr;
    int policy = 0;
    int max_prio_for_policy = 0;

    pthread_attr_init(&thAttr);
    pthread_attr_getschedpolicy(&thAttr, &policy);
    max_prio_for_policy = sched_get_priority_max(policy);


    pthread_setschedprio(thId, max_prio_for_policy);
    pthread_attr_destroy(&thAttr);

    return 0;
}

此示例适用于默认调度策略SCHED_OTHER。

编辑:线程属性必须在使用之前初始化。

2020-06-07