给定 - 线程的线程ID
要求 - 设置线程ID的Linux优先级
约束 - 不能使用setpriority()
我试过使用下面的
pthread_setschedprio (pthread_t thread,int prio);
pthread_setschedparam (pthread_t thread,int policy,
const struct sched_param * param);
以上两个API都使用pthread_t作为参数。我无法从线程ID构造(类型转换)pthread_t。我知道由于种类不同,转换不可能。
有没有办法让你做到这一点?
答案 0 :(得分:1)
pthread_setschedprio
接口的某些方面可用于具有sched_setparam
函数的普通线程ID(在<thread.h>
中声明)。 sched_setparam
manual page表示流程受到影响(这是POSIX规定的行为),但在Linux上it's actually the thread of that ID。
请记住,直接调用sched_setparam
可能会破坏PI互斥锁和其他同步原语所期望的行为,因为直接调用不会执行pthread_
*函数执行的额外簿记。