gpt4 book ai didi

c - 如何增加子线程相对于父线程的优先级

转载 作者:太空狗 更新时间:2023-10-29 15:34:07 24 4
gpt4 key购买 nike

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

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

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。

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

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

最佳答案

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

pthread_attr_setschedpolicy(&tattr, SCHED_RR);

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

关于c - 如何增加子线程相对于父线程的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1704625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com