linux 创建线程时设置优先级

pthread_attr_t thread_attr;
struct sched_param schedule_param;
   
pthread_attr_init(&thread_attr);
schedule_param.sched_priority = 99;
pthread_attr_setinheritsched(&thread_attr, PTHREAD_EXPLICIT_SCHED); //有这行,设置优先级才会生效
pthread_attr_setschedpolicy(&thread_attr,SCHED_RR);
pthread_attr_setschedparam(&thread_attr, &schedule_param); 

 

pthread_create(&workerThread, &thread_attr, WorkerThreadFunction, &param);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,线程优先级可以通过设置线程的调度策略和优先级来实现。 1. 调度策略:Linux系统提供了多种线程调度策略,包括SCHED_FIFO、SCHED_RR、SCHED_OTHER等。其中,SCHED_FIFO和SCHED_RR是实调度策略,而SCHED_OTHER是非实调度策略。一般情况下,我们可以使用SCHED_OTHER策略来进行线程的调度。 2. 优先级Linux系统中,线程优先级是一个整数值,范围为0~99,数值越大,优先级越高。默认情况下,线程优先级为0。 线程优先级可以通过以下两个函数来设置: - int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param) 该函数用于设置线程的调度策略和优先级。其中,thread参数指定要设置线程,policy参数指定线程的调度策略,param参数指定线程的调度参数,包括优先级等。 - int pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param) 该函数用于获取线程的调度策略和优先级。其中,thread参数指定要获取的线程,policy参数用于返回线程的调度策略,param参数用于返回线程的调度参数,包括优先级等。 下面是一个简单的示例代码,用于设置线程优先级: ```c #include <pthread.h> void *thread_func(void *arg) { // 线程执行的代码 return NULL; } int main() { pthread_t thread; struct sched_param param; int policy; // 创建线程 pthread_create(&thread, NULL, thread_func, NULL); // 设置线程优先级 param.sched_priority = 80; pthread_setschedparam(thread, SCHED_OTHER, &param); // 获取线程优先级 pthread_getschedparam(thread, &policy, &param); printf("Thread priority is %d\n", param.sched_priority); // 等待线程结束 pthread_join(thread, NULL); return 0; } ``` 在上面的代码中,我们首先创建了一个线程,然后使用pthread_setschedparam函数设置线程优先级为80,最后使用pthread_getschedparam函数获取线程优先级并打印输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值