代码之家  ›  专栏  ›  技术社区  ›  Gordon Wrigley

如何提高子pthread相对于父线程的优先级

  •  4
  • Gordon Wrigley  · 技术社区  · 16 年前

    我尝试如下设置所创建线程的优先级:

    struct sched_param param;
    pthread_attr_t tattr;
    pthread_attr_init(&tattr);
    pthread_attr_getschedparam(&tattr, &param);
    param.sched_priority = sched_get_priority_max(SCHED_RR);
    pthread_attr_setschedparam(&tattr, &param);
    pthread_create(&helper_thread, &tattr, helper_main, NULL);
    

    但是 pthread_attr_setschedparam 呼叫正在返回EINVAL。

    我不确定我做错了什么。这是正确的一般方法吗?

    我真的不在乎它是如何完成的,我只需要新线程比原来的线程具有更高的优先级。

    1 回复  |  直到 16 年前
        1
  •  4
  •   caf    16 年前

    在默认计划策略下设置优先级( SCHED_OTHER SCHED_RR 如果要使用 附表

    pthread_attr_setschedpolicy(&tattr, SCHED_RR);
    

    您也不应该将它设置为最大优先级-如果您只是希望它的优先级高于主线程,那么优先级为1就足够了(您可能会发现设置最大优先级失败 EPERM 如果你不是根,无论如何)。