POSIX 线程 pthread_setschedparam
Posted
技术标签:
【中文标题】POSIX 线程 pthread_setschedparam【英文标题】:POSIX thread pthread_setschedparam 【发布时间】:2011-12-27 09:33:21 【问题描述】:谁能帮助我如何更改线程优先级或线程策略?我从主线程创建了一个子线程,当我尝试使用pthread_setschedprio(pthread_self(),2);
和pthread_setschedparam(pthread_self(),SCHED_OTHER,&param);
更改线程优先级或线程调度策略时,它显示错误 EINVAL 无效参数。请解释 SCHED_OTHER 政策的内容?
这里 struct sched_param param;
【问题讨论】:
【参考方案1】:不清楚您的 param 参数包含什么(它是 struct sched_param* 类型并具有 sched_priority 字段 - 因此您可以一次设置策略和优先级) .很可能它包含不受支持/超出范围的值 - 如果您忘记用类似的东西初始化它,或者是垃圾:
struct sched_param param;
param.sched_priority = 2;
顺便说一下,给定调度程序策略的有效优先级在 sched_get_priority_max(int policy) 和 sched_get_priority_min(int policy) 返回的范围内 - 可能值得检查。
更新
来自this:
使用 SCHED_OTHER 调度的进程必须分配静态 优先级 0,进程 在 SCHED_FIFO 或 SCHED_RR 下调度可以在 范围 1 到 99
【讨论】:
非常感谢您尝试我的查询,关于 SCHED_OTHER 策略的最小和最大优先级,我都为零。以上是关于POSIX 线程 pthread_setschedparam的主要内容,如果未能解决你的问题,请参考以下文章