POSIX线程优先级设置

POSIX线程优先级的修改方式有静态修改、动态修改。

  • 静态修改:在线程启动前设置初始值,即修改线程属性块的值。
  • 动态修改:在线程启动后动态修改,通过posix调度函数进行动态修改。

静态修改:

在调用 pthread_create 函数创建启动线程之前,调用 pthread_attr_init 函数初始化一个线程属性对象

#include <pthread.h>
int pthread_attr_init(pthread_attr_t *pattr);

同时posix提供了一系列函数用于 获取/设置 线程属性对象各成员的值,函数的 pthread_attr_getschedparam 输入参数 pschedparam 结构体中含有存储优先级的成员变量,调用 pthread_attr_setschedparam 函数可以设置线程属性对象的调度参数,调用 pthread_attr_getschedparam 函数将获得线程属性对象的调度参数。函数定义如下图:

#include <pthread.h>
int pthread_attr_setschedparam(pthread_attr_t *pattr, const struct sched_param *pschedparam);

 

动态修改:

posix提供了一系列线程调度函数用于动态修改线程属性,其中 sched_setscheduler 函数提供了一种动态改变线程优先级的方法。调用 sched_setscheduler 函数在设置调度策略的同时也设置了进程优先级,输入参数 pschedparam 结构体中含有存储优先级的成员变量。

#include <sched.h>
int sched_setscheduler(pid_t pid, int iPolicy, const struct sched_param *pschedparam);

也可以通过调用 sched_setparam 函数来设置进程的优先级,输入参数 pschedparam 结构体中含有存储优先级的成员变量。

#include <sched.h>
int sched_setparam(pid_t pid, const struct sched_param *pschedparam);

 

 

猜你喜欢

转载自blog.csdn.net/Liangren_/article/details/115175951