mfc 线程的优先级
知识点:
线程优先级
获取当前线程句柄
线程优先级设置
线程优先级变动
线程优先级获取 一、线程优先级(Thread priority ) 简单的说就是(线程)的优先级越高,那么就可以分占相对多的CPU时间片。 每个进程都有相应的优先级,优先级决定它何时运行和占用 CPU 时间。最终的优先级共分32级,是从 到 的数值,称为基本优先级别。 进程优先级 priority class 标志 优先级值
idle (低) IDLE_PRIORITY_CLASS
Below 低于标准 BELOW_NORMAL_PRIORITY_CLASS 此值在2000以下系统不支持
normal (标准) NORMAL_PRIORITY_CLASS (前台) 或 (后台)
Above 高于标准 ABOVE_NORMAL_PRIORITY_CLASS 此值在2000以下系统不支持
high (高) HIGH_PRIORITY_CLASS
realtime (实时) REALTIME_PRIORITY_CLASS 一个线程创建的时候,会继承进程的优先级等级。另外线程优先级可以用SetThreadPriority来进行微调:
微调范围 线程优先级等级 标志 优先级值
idle (最低) THREAD_PRIORITY_IDLE 如果进程优先级为realtime则调整为16,其它情况为1
LOWEST 低 THREAD_PRIORITY_LOWEST -(在原有基础上-)
BELOW 低于标准 THREAD_PRIORITY_BELOW_NORMAL -(在原有基础上-)
NORMAL(标准) THREAD_PRIORITY_NORMAL 不变(取进程优先级值)
ABOVE 高于标准 THREAD_PRIORITY_ABOVE_NORMAL +(在原有基础上+)
HIGHEST (高) THREAD_PRIORITY_HIGHEST +(在原有基础上+)
CRITICAL(最高) THREAD_PRIORITY_TIME_CRITICAL 如果进程优先级为realtime则调整为31,其它情况为15 二、获取当前线程句柄
HANDLE GetCurrentThread(VOID)
//返回当前进句柄
DWORD GetCurrentThreadId(VOID)
//返回当前进程ID值
、其它线程函数
BOOL SetThreadPriority 设置一个线程的优先级别
int GetThreadPriority 返回一个线程的 优先级别
SetThreadPriorityBoost 设置线程是否禁用动态调整优先级功能。
GetThreadPriorityBoost 获取线程是否禁用了优先级微调功能。 三、线程优先级的设置
BOOL SetThreadPriority
( HANDLE hThread,// 线程句柄 handle to the thread int nPriority // 要设置线程优先级别thread priority level ); void CDialog_PROCESS::OnBnClickedRadio7()
{
// TODO: 在此添加控件通知处理程序代码
BOOL r=;
UpdateData(true);
switch (m_radio_thread_selNum)
{
case :
r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_IDLE); //设置为 最低
TRACE("thread=%d,%04x set priority to THREAD_PRIORITY_IDLE \n",GetCurrentThreadId(),GetCurrentThreadId());
break;
case :
r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST);//设置为 较低
TRACE("thread=%d,%04x set priority to THREAD_PRIORITY_LOWEST \n",GetCurrentThreadId(),GetCurrentThreadId());
break;
case :
r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_BELOW_NORMAL); //设置为 低于标准
TRACE("thread=%d,%04X set priority to THREAD_PRIORITY_BELOW_NORMAL \n",GetCurrentThreadId(),GetCurrentThreadId());
break;
case :
r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL); //设置为 标准
TRACE("thread=%d,%04X set priority to THREAD_PRIORITY_NORMAL \n",GetCurrentThreadId(),GetCurrentThreadId());
break;
case :
r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL); //设置为 高于标准
TRACE("thread=%d,%04X set priority to THREAD_PRIORITY_ABOVE_NORMAL \n",GetCurrentThreadId(),GetCurrentThreadId());
break;
case :
r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST); //设置为 较高
TRACE("thread=%d,%04X set priority to THREAD_PRIORITY_HIGHEST \n",GetCurrentThreadId(),GetCurrentThreadId());
break;
case :
r=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL); //设置为 最高
TRACE("thread=%d,%04X set priority to THREAD_PRIORITY_TIME_CRITICAL \n",GetCurrentThreadId(),GetCurrentThreadId());
break;
default:
break; }
}
mfc 线程的优先级的更多相关文章
- C#夯实基础之多线程三:线程的优先级
一.为什么需要优先级--线程调度的问题 在现实生活中,优先级是一个很常见的现象:在火车站,如果你是孕妇,你是可以走进站中的专门绿色通道的,可以提前上火车以免拥挤:火警119匪警110出警的时候,都是人 ...
- java 22 - 6 多线程之线程调度和设置线程的优先级
线程调度 假如我们的计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到 CPU时间片,也就是使用权,才可以执行指令. 那么Java是如何对线程进行调用的呢? 线程有两种调 ...
- java 线程的优先级
//线程的优先级 //线程1 class xc1 implements Runnable{ public void run(){ for(int i=0;i<20;i++){ System.ou ...
- java笔记--查看和修改线程的优先级
查看和修改线程的优先级 java中每一个线程都有优先级属性,在默认情况下,新建的线程的优先级与创建该线程的线程优先级相同.每当线程调度器选择要运行的线程时,通常选择优先级较高的线程. 注:线程的优先级 ...
- MFC 线程创建方式
MFC 分UI线程和工作线程,一般现在的应用程序都是一个主UI线程和N个工作线程来完成工作.主UI线程获取到工作线程发送的信息来刷新界面. 不过因为工作需要,MFC有要维护的项目,因此就学习一下MFC ...
- Android(java)学习笔记63:线程的优先级
1. Java线程的优先级从1到10级别,值越大优先级越高线程默认优先级是5.值越大优先级越高 (1) 继承自Thread类创建线程类: package cn.itcast_04; public cl ...
- Java 并发 线程的优先级
Java 并发 线程的优先级 @author ixenos 低优先级线程的执行时刻 1.在任意时刻,当有多个线程处于可运行状态时,运行系统总是挑选一个优先级最高的线程执行,只有当线程停止.退出或者由于 ...
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...
- Linux-pthread如何设置线程的优先级
设置线程优先级的函数: int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param ...
随机推荐
- Android之使用枚举利弊及替代方案
Android上不应该使用枚举,占内存,应该使用@XXXDef注解来替代 使用 Enum 的缺点 每一个枚举值都是一个对象,在使用它时会增加额外的内存消耗,所以枚举相比与 Integer 和 Stri ...
- 【Java入门提高篇】Day19 Java容器类详解(二)Map接口
上一篇里介绍了容器家族里的大族长——Collection接口,今天来看看容器家族里的二族长——Map接口. Map也是容器家族的一个大分支,但里面的元素都是以键值对(key-value)的形式存放的, ...
- Nlog.Config:日志方法步骤
首先添加negut包Nlog.Config: 安装完毕以后,可以替换Nlog.config <?xml version="1.0" encoding="utf-8& ...
- 解决:Tomcat 局域网IP地址 访问不了
解决:Tomcat 局域网IP地址 访问不了 2014年10月17日 ⁄ 综合 ⁄ 共 1000字 ⁄ 字号 小 中 大 ⁄ 评论关闭 如果连最基本的localhost:8080都失败的话. 原因就一 ...
- MySQL优化—工欲善其事,必先利其器(2)
上一篇文章简单介绍了下EXPLAIN的用法,今天主要介绍以下几点内容: 慢查询日志 打开慢查询日志 保存慢查询日志到表中 慢查询日志分析 Percona Toolkit介绍 安装 pt-query-d ...
- 使用C#获取Windows Phone手机的各种数据(转)
转自:http://www.sum16.com/desinger/use-c-sharp-get-windows-phone-information.html 使用C#获取Windows Phone手 ...
- Oracle_spatial的空间索引
空间索引 1.空间索引的创建 1)创建索引之前总是要为空间层插入元数据 2)如果之前创建的索引失败了,必须先删除才能创建 Drop index customers_sidx; 创建索引: Create ...
- pdf阅读器开发
文章基于sumatrapdf的实现(当中mupdf中的内容不会太多涉及).以及自己在此基础上做的 优化,扩展.详细效果能够參考百度阅读器精简版. 最NB的还是得属于foxit.渲染速度一流,展示大图片 ...
- Netty入门(六)Decoder(解码器)
Netty 提供了丰富的解码器抽象基类,主要分为两类: 解码字节到消息(ByteToMessageDecoder 和 ReplayingDecoder) 解码消息到消息(MessageToMessag ...
- java中Integer与int装箱拆箱一点收获
示例代码: class BoxIntInteger { public static void main(String[] args) { Integer a = new Integer(10111); ...