侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

pthread_attr_setschedparam函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 145 阅读 / 532 字 / 正在检测是否收录...

pthread_attr_setschedparam函数用法详解

pthread_attr_setschedparam函数简介

  • 头文件包含
#include <pthread.h>
  • 函数定义
int pthread_attr_setschedparam(pthread_attr_t * attr ,
                               const struct sched_param * param );
int pthread_attr_getschedparam(const pthread_attr_t * attr ,
                               struct sched_param * param );
  • 编译链接选项
-pthread

pthread_attr_setschedparam函数常见使用错误

  • 链接错误
    undefined reference to `pthread_attr_setschedparam'
    解决办法:添加链接选项
-pthread
  • 编译错误
    warning: implicit declaration of function ‘pthread_attr_setschedparam’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <pthread.h>

pthread_attr_setschedparam函数详细描述

pthread_attr_setschedparam ()函数将attr引用的thread attributes对象的调度参数属性设置为param 指向的缓冲区中指定的值。这些属性确定使用thread attributes对象attr 创建的线程的调度参数
pthread_attr_getschedparam ()返回param 指向的缓冲区中的线程属性对象attr的调度参数属性
调度参数以以下结构维护:

struct sched_param {
   int sched_priority;     /* Scheduling priority */
};

可以看到,只支持一个调度参数。有关每个调度策略中调度优先级的允许范围的详细信息,请参阅sched (7)
为了使pthread_attr_setschedparam ()进行的参数设置在调用pthread_create (3)时生效,调用方必须使用pthread_attr_setinheritsched (3)将属性对象attr的inherite-scheduler属性设置为PTHREAD_EXPLICIT_SCHED

pthread_attr_setschedparam函数返回值

如果成功,这些函数返回0;错误时,它们返回一个非零错误号。

pthread_attr_setschedparam函数错误码

pthread_attr_setschedparam ()可能会失败,出现以下错误:

  • EINVAL param中指定的优先级对于attr 的当前调度策略没有意义

POSIX.1还为pthread_attr_setschedparam ()记录了一个 ENOTSUP 错误,这个值在Linux上永远不会返回(但是可移植的和将来可靠的应用程序仍然应该处理这个错误返回值)。

pthread_attr_setschedparam函数其他说明

有关Linux支持的线程调度策略的列表,请参见pthread_attr_setschedpolicy (3)。

pthread_attr_setschedparam函数使用举例

参见pthread_setschedparam (3)

0

评论区