- 论坛徽章:
- 0
|
本帖最后由 wy200747055 于 2012-04-24 08:49 编辑
程序如下:
#include<stdio.h>
#include<pthread.h>
#include<sched.h>
void *child_thread(void *arg)
{
int policy;
int max_priority,min_priority;
struct sched_param param;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setinheritsched(&attr,PTHREAD_EXPLICIT_SCHED);
pthread_attr_getinheritsched(&attr,&policy);
if(policy==PTHREAD_EXPLICIT_SCHED)
printf(“Inheritsched THREAD_EXPLICIT_SCHED\n”);
if(policy==PTHREAD_INHERIT_SCHED)
printf(“Inheritsched THREAD_INHERIT_SCHED\n”);
pthread_attr_setschedpolicy(&attr,SCHED_RR);
pthread_attr_getschedpolicy(&attr,&policy);
if(policy==SCHED_FIFO)
printf(“Schedpolicy:SCHED_FIFO\n”);
if(policy==SCHED_RR)
printf(“Schedpolicy:SCHED_RR\n”);
if(policy==SCHED_OTHER)
printf(“Schedpolicy:SCHED_OTHER\n”);
sched_get_priority_max(max_priority);
sched_get_priority_min(min_priority);
printf(“Maxpriority:%u\n”,max_priority);
printf(“Minpriority:%u\n”,min_priority);
param.sched_priority=max_priority;
pthread_attr_setschedparam(&attr,¶m);
printf(“sched_priority:%u\n”,param.sched_priority);
pthread_attr_destroy(&attr);
}
int main(int argc,char *argv[ ])
{
pthread_t child_thread_id;
pthread_create(&child_thread_id,NULL,child_thread,NULL);
pthread_join(child_thread_id,NULL);
}
运行结果如下:
程序中红色部分为我获取进程最大优先级和最小优先级部分。但是结果中显示的最大优先级比最小优先加的值小,这在linux下是正确的。但是,我查看的资料上说的linux的优先级的值是-20到19之间,为什么我运行的结果中优先级的值都这么大呢,完全不在-20到19之间呢?
求大牛,求指教~ |
|