想设置创建线程的优先级,如下:
#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
难道没有办法设置线程的优先级了吗?
请教线程优先级设置问题
软件和网站开发以及相关技术探讨
前往
- 公告/注意事项
- ↳ 新闻和通知
- ↳ 软件推荐
- 系统安装
- ↳ 教学和常见问答
- ↳ 系统安装和升级
- ↳ 启动和引导
- ↳ 网卡无线拨号
- ↳ 硬件与内核
- ↳ 笔记本及便携设备
- ↳ Ubuntu衍生版
- ↳ 其他类Unix OS发行版
- ↳ Debian发行版
- 配置美化
- ↳ 中文显示和输入法
- ↳ 个人配置文件存放点
- ↳ 软件文档翻译
- ↳ 窗口管理器及美化
- ↳ 桌面展示
- 软件使用
- ↳ 办公、图像、机械电子设计等
- ↳ Vim和Emacs
- ↳ 开源模板库
- ↳ 互联网相关软件
- ↳ 影音多媒体
- ↳ 游戏和模拟器
- ↳ 虚拟机和虚拟化
- ↳ Wine及其分支
- ↳ 其它类软件
- 服务器管理
- ↳ 服务器运维
- ↳ 云计算和容器(K8S/KVM/Docker/WSL等)
- ↳ Ubuntu VPS
- 程序设计与开发
- ↳ Shell脚本
- ↳ 软件/网站开发
- ↳ 内核及嵌入式开发
- ↳ Ubuntu编译和打包
- ↳ 开源小工具
- ↳ 挑战任务
- 感想与交流
- ↳ 深度PK版
- ↳ Ubuntu故事和感慨
- ↳ 同城交流
- ↳ 校园社团
- ↳ 港澳台校区
- ↳ 国外校区
- 站务区
- ↳ 论坛管理
- ↳ Ubuntu中文网上商店