当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教线程优先级设置问题
帖子发表于 : 2008-08-12 21:07 

注册: 2007-03-03 16:02
帖子: 51
送出感谢: 0 次
接收感谢: 0 次
想设置创建线程的优先级,如下:

#include <pthread.h>
#include <stdio.h>
#include <sched.h>

void *thread_routine(void *arg)
{
int i=0;
int my_policy;
struct sched_param my_param;
int status;

status=pthread_getschedparam(pthread_self(), &my_policy, &my_param);
if(status!=0){
printf("error..\n");return;
}
printf("%s/%d\n",(my_policy==SCHED_FIFO?"FIFO":(my_policy==SCHED_RR?"RR":(my_policy==SCHED_OTHER?"OTHER":"Unkonw"))),my_param.sched_priority);

return NULL;
}

int main()
{

pthread_t pid;
pthread_attr_t thread_attr;

int thread_policy;
struct sched_param thread_param;
int status, rr_max_priority;

if(pthread_attr_init(&thread_attr))printf("init error");

if(pthread_attr_getschedparam(&thread_attr,&thread_param))printf("get param error");
if(pthread_attr_setschedpolicy(&thread_attr,SCHED_RR))printf("setpolicy error");
if(-1==(rr_max_priority=sched_get_priority_max(SCHED_RR)))printf("priority error");
thread_param.sched_priority=rr_max_priority/2;

if(pthread_attr_setschedparam(&thread_attr,&thread_param))printf("set param error");
if(pthread_attr_setinheritsched(&thread_attr,PTHREAD_EXPLICIT_SCHED))printf("set inherit error");

status=pthread_create(&pid,&thread_attr,thread_routine,NULL);
printf("create status=%d\n",status);
pthread_join(pid,NULL);
return 0;
}

gcc 带 -lpthread 编译运行,创建线程失败,返回值status=1...

有打印线程的默认调度策略为:SCHED_OTHER

难道没有办法设置线程的优先级了吗?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译