- 论坛徽章:
- 0
|
pthread_attr_t attr;
int pocily;
int ret;
pthread_attr_init(&attr);
if (ret =pthread_attr_setschedpolicy(&attr, SCHED_FIFO)) {
printf("set ched policy failed -- %s \n", strerror(ret));
return -1;
}
if (pthread_attr_getschedpolicy(&attr, &pocily)) {
printf("set ched policy failed -- %s \n", strerror(ret));
return -1;
}
if (pocily == SCHED_FIFO) {
printf(" fifo .\n");
} else if (pocily == SCHED_RR) {
printf(" rr.\n");
} else if (pocily == SCHED_OTHER) {
printf("other.\n");
} else {
printf("unkown.\n");
}
我想更改一个线程的优先级; 上述代码都在超级用户下运行的,
1. 上面这段代码在我的FC7 (kernel 2.6.21)下面运行, 得到的pocily 不是SCHED_FIFO\SCHED_RR \ SCHED_OTHER中的任何一个,而是一个随机数,(也就是输出"unknown"), 这是为什么? 看样子pthread_attr_getschedpolicy没有正常工作,但是调用又没有失败。
2.把这段代码放到 arm-linux 2.6.21intel xscale monahans pxa310 平台下运行,无论用pthread_attr_setschedpolicy怎么设置,最后得到
的pocliy 都是SCHED_OTHER, 然后用 sched_get_priority_max(pocliy) 得到为0;
是不是我这个内核不支持SCHED_FIFO或者SCHED_RR呀? 那我要怎么改呢?
如果要重编内核的话,改内核选项中的哪一项?
我强烈需要更改我程序中一个线程的优先级,先谢谢了。
[ 本帖最后由 makeclear 于 2008-6-2 23:16 编辑 ] |
|