【问题标题】:how to increase the priority of a child pthread relative to the parent thread如何增加子线程相对于父线程的优先级
【发布时间】:2009-11-09 23:17:00
【问题描述】:

我的应用程序创建了一个辅助 pthread,我需要它以比主线程更高的优先级运行。

我尝试这样设置创建线程的优先级:

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。

我不确定我在这里做错了什么。这甚至是正确的通用方法吗?

我并不关心它是如何完成的,我只需要新线程的优先级高于原来的线程即可。

【问题讨论】:

    标签: c posix pthreads


    【解决方案1】:

    在默认调度策略 (SCHED_OTHER) 下设置优先级无效。如果要使用SCHED_RR 优先级,则需要切换到SCHED_RR 策略:

    pthread_attr_setschedpolicy(&tattr, SCHED_RR);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      相关资源
      最近更新 更多