当前位置: 技术问答>linux和unix
如何修改主线程的调度策略
来源: 互联网 发布时间:2016-08-26
本文导语: 我现在想要将主线程的调度策略从默认的SCHED_OTHER修改为SCHED_RR,根据查阅的资料来看应该是调用pthread_setschedparam这个函数,但是我调用的时候要么没有设置成功,要么就是Invalid argument。我确定我是用root用户编译以...
我现在想要将主线程的调度策略从默认的SCHED_OTHER修改为SCHED_RR,根据查阅的资料来看应该是调用pthread_setschedparam这个函数,但是我调用的时候要么没有设置成功,要么就是Invalid argument。我确定我是用root用户编译以及运行的程序,所以不能够理解,希望能够有人为我解答,谢谢。
代码如下:
代码如下:
#include
#include
#include
main()
{
struct sched_param param;
int policy;
if (pthread_getschedparam(pthread_self(), &policy, ¶m) != 0)
perror("pthread_getschedparam:");
printf("sched_priority:%dn", param.sched_priority);
if (pthread_setschedparam(pthread_self(), SCHED_FIFO, ¶m) != 0)
perror("pthread_setschedparam:");
if (pthread_getschedparam(pthread_self(), &policy, ¶m) != 0)
perror("pthread_getschedparam:");
if (policy == SCHED_RR)
printf("policy is SCHED_RRn");
else if (policy == SCHED_OTHER)
printf("policy is SCHED_OTHERn");
else if (policy == SCHED_FIFO)
printf("policy is SCHED_FIFOn");
else
printf("policy is %dn", policy);
while (1)
{
printf("In while (1)n");
sleep(5);
}
return 0;
}
|
我在pthread.h里面看到这个int pthread_attr_setschedpolicy (pthread_attr_t *, int);
还试过,没百度过,不晓得干什么的
还试过,没百度过,不晓得干什么的
|
改变调度策略应该是要进入内核态吧
看看内核代码
看看内核代码