替换为setpriority(PRIO_PROCESS,thread_id,priority)

时间:2017-07-24 10:35:38

标签: linux multithreading pthreads

给定 - 线程的线程ID 要求 - 设置线程ID的Linux优先级 约束 - 不能使用setpriority()

我试过使用下面的

pthread_setschedprio (pthread_t thread,int prio);
pthread_setschedparam (pthread_t thread,int policy,                           const struct sched_pa​​ram * param);

以上两个API都使用pthread_t作为参数。我无法从线程ID构造(类型转换)pthread_t。我知道由于种类不同,转换不可能。

有没有办法让你做到这一点?

1 个答案:

答案 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_ *函数执行的额外簿记。