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_pa​​ram param;

【问题讨论】:

【参考方案1】:

不清楚您的 param 参数包含什么(它是 struct sched_pa​​ram* 类型并具有 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的主要内容,如果未能解决你的问题,请参考以下文章

POSIX 线程详解

POSIX 线程详解

POSIX多线程——基本线程管理函数介绍

POSIX 多线程编程及理解

转载:Posix线程编程指南

如何在单个 POSIX 线程中结合两种不同的等待机制?