POSIX线程优先级设置
POSIX线程优先级的修改方式有静态修改、动态修改。
- 静态修改:在线程启动前设置初始值,即修改线程属性块的值。
- 动态修改:在线程启动后动态修改,通过posix调度函数进行动态修改。
静态修改:
在调用 pthread_create 函数创建启动线程之前,调用 pthread_attr_init 函数初始化一个线程属性对象
#include <pthread.h>
int pthread_attr_init(pthread_attr_t *pattr);
同时posix提供了一系列函数用于 获取/设置 线程属性对象各成员的值,函数的 pthread_attr_getschedparam 输入参数 pschedparam 结构体中含有存储优先级的成员变量,调用 pthread_attr_setschedparam 函数可以设置线程属性对象的调度参数,调用 pthread_attr_getschedparam 函数将获得线程属性对象的调度参数。函数定义如下图:
#include <pthread.h>
int pthread_attr_setschedparam(pthread_attr_t *pattr, const struct sched_param *pschedparam);
int pthread_attr_getschedparam(const pthread_attr_t *pattr, struct sched_param *pschedparam);
动态修改:
进程(主线程):
posix提供了一系列线程调度函数用于动态修改线程属性,其中 sched_setscheduler 函数提供了一种动态改变线程优先级的方法。调用 sched_setscheduler 函数在设置调度策略的同时也设置了进程优先级,输入参数 pschedparam 结构体中含有存储优先级的成员变量。
#include <sched.h>
int sched_setscheduler(pid_t pid, int iPolicy, const struct sched_param *pschedparam);
也可以通过调用 sched_setparam 函数来设置进程的优先级,输入参数 pschedparam 结构体中含有存储优先级的成员变量。
#include <sched.h>
int sched_setparam(pid_t pid, const struct sched_param *pschedparam);
设置满足条件的所有线程的 SylixOS 调度优先级。
#include <sys/resource.h>
int setpriority(int which, id_t who, int value);
函数 setpriority 原型分析:
- 此函数成功时返回 0,失败时返回-1 并设置错误号;
- 参数 which 指定参数 who 的意义;
- 参数 who 的意义由参数 which 指定,如下图所示:
- 参数 value 是要设置的优先级值。
进程(主线程):
nice 函数可以调整当前进程优先级。
#include <unistd.h>
int nice(int incr);
函数 nice 原型分析:
- 此函数成功返回 0,失败返回-1 并设置错误号;
- 参数 incr 是要调整的数值。本函数对 incr 参数的处理流程如下:
(1) 首先获取当前进程中所有线程中的最低优先级,即数值最大的的优先级;
(2) 然后将获取到的值和 incr 参数求和;
(3) 将上一步求和的结果设置到当前进程的所有线程中。
POSIX也提供了相关函数 pthread_setschedprio 用于动态修改当前进程优先级,但 pthread_getschedprio 不属于posix 定义范围,SylixOS也给出了实现。
#include <pthread.h>int pthread_setschedprio(pthread_t thread, int prio);
int pthread_getschedprio(pthread_t thread, int *prio);
函数 pthread_setschedprio 原型分析:
- 此函数成功返回 0,失败返回-1 并设置错误号;
- 参数 thread 是要调整的线程id。
- 参数 prio 是需要设置的线程优先级的数值。
POSIX线程优先级设置相关推荐
- linux线程调度函数,Linux调度策略及线程优先级设置
Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务.一旦占用cpu则一直运行.一直运行直到有更高优先级任务到达或自己放弃 3, ...
- Android线程优先级设置方法技巧
对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题, 比如很多无关紧要的线程会占用大量的CPU时间,虽然通过了MultiThread来解决慢速I/O但是合理分配优先级对于并发编 ...
- Java 线程实例一(查看线程是否存活、获取当前线程名称、状态监测、线程优先级设置、死锁及解决方法、获取线程id、线程挂起)
查看线程是否存活 以下实例演示了如何通过继承 Thread 类并使用 isAlive() 方法来检测一个线程是否存活: public class TwoThreadAlive extends Thre ...
- java设置子线程优先级_Java 实例 - 线程优先级设置
Java 实例 - 线程优先级设置 以下实例演示了如何通过setPriority() 方法来设置线程的优先级: SimplePriorities.java 文件 public class Simple ...
- Linux 线程优先级设置(内含C语言版线程创建、绑定CPU和优先级设置代码)
参考链接: https://blog.csdn.net/wushuomin/article/details/80051295 //详细讲解pthread_create 函数 https://blog. ...
- c语言怎么设置cpu优先级,线程优先级,设置,setPriority()方法
package seday08.thread; /** * @author xingsir * 线程优先级 * 线程启动后纳入到线程调度,线程时刻处于被动获取CPU时间片而无法主动获取.我们可以通过调 ...
- 【Linux 内核】线程调度示例一 ③ ( 获取线程优先级 | 设置线程调度策略 | 代码示例 )
文章目录 一.获取线程优先级 1.pthread_attr_setschedparam 和 pthread_attr_getschedparam 函数 2.获取线程优先级代码示例 二.设置线程调度策略 ...
- linux内核线程优先级设置,Linux c 线程属性,线程优先级的修改
Linux c 线程属性,线程优先级的修改 发布时间:2018-07-19 10:24, 浏览次数:1290 , 标签: Linux 线程属性的设置,网上找的文章总感觉不够全面,还是结合man手册查看 ...
- Android 中设置线程优先级的正确方式(2种方法)
Android 中设置线程优先级的正确方式(2种方法) 在 Android 中,有两种常见的设置线程优先级的方式: 第一种,使用 Thread 类实例的 setPriority 方法,来设置线程优先级 ...
- 【C++ 语言】线程 ( 线程创建方法 | 线程标识符 | 线程属性 | 线程属性初始化 | 线程属性销毁 | 分离线程 | 线程调度策略 | 线程优先级 | 线程等待 )
文章目录 I 线程创建方法 II 线程执行函数 III 线程标识符 IV 线程属性 V 线程属性 1 ( 分离线程 | 非分离线程 ) VI 线程属性 2 ( 线程调度策略 ) VII 线程属性 3 ...
最新文章
- 【windows】cmd中的help无法使用的解决方法
- eclipse中报错:java.lang.OutOfMemoryError: Java heap space
- jni java c++ 参数传递问题解决
- 属性被分为八大类不包括_乙肝病毒携带者分为几类?主要有5类,包括乙肝表面抗原阳性患者...
- html5做文字颜色渐变代码,神奇!js+CSS+DIV实现文字颜色渐变效果_javascript技巧
- ffmpeg最新源代码(定期更新)
- Python 刷题常用语法与数据结构汇总-2022.01.30
- 三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异
- iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了
- 12_统计学习方法总结
- python重新启动整个脚本_每次对脚本进行更改时,都需要在终端中重新启动python...
- 如何在Ubuntu 16.04上安装和配置GitLab
- swc反编译工具_ffdec 10.0|ffdec(flash反编译工具)下载v10.0.0官方最新版 - 欧普软件下载...
- 草根站长胖子讲述做站故事
- 闪信霸屏短信USSD是什么?
- 计算机一级字幕设置,如何开启电脑哔哩哔哩中的CC字幕功能
- 全球各大网站的服务器使用什么操作系统和WEB服务器(转)
- 一次微信小程序的问题跟踪记录
- java租车_Java 哒哒租车系统(控制台)
- 删除Mac中的Windows启动项
热门文章
- 统计学中p值计算公式_统计学中P值的计算!
- html单元格溢出,excel如何超出单元格显示
- 单击选定单元格后输入新内容_excel表格,要双击选定后才能输入,单击不能输入为什么...
- 2019年国内开源镜像站点汇总(已更新,之前的好多不能使用的)
- 【AndroidStudio】手机QQ登录界面2022版
- lsb算法 matlab隐藏图片算法,数字图像加密算法之空域LSB
- 计算机录制视频的方法,怎么录制电脑屏幕视频步骤(电脑录屏的方法有4种)...
- Achain迎来众多合作伙伴 共建社区生态发展
- css层叠实例,css 层叠与z-index的示例代码
- 「精品」无损批量压缩图片工具 - Caesium Image Compressor