MFC线程优先级程序图示
线程优先级等级描述如下;
idle (最低) THREAD_PRIORITY_IDLE
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
Win7,VC6,新建一个对话框工程;添加7个进度条控件;其每个控件的ID为IDC_PROGRESSx;
添加一个按钮;添加按钮的单击函数;
对话框Cpp文件头部添加如下代码;
static UINT g_uCount1 = 0;
static UINT g_uCount2 = 0;
static UINT g_uCount3 = 0;
static UINT g_uCount4 = 0; // 各个线程各自的循环计数
static UINT g_uCount5 = 0;
static UINT g_uCount6 = 0;
static UINT g_uCount7 = 0;CProgressCtrl* g_ptrProgress1 = NULL;
CProgressCtrl* g_ptrProgress2 = NULL;
CProgressCtrl* g_ptrProgress3 = NULL; //各个进度条的指针
CProgressCtrl* g_ptrProgress4 = NULL;
CProgressCtrl* g_ptrProgress5 = NULL;
CProgressCtrl* g_ptrProgress6 = NULL;
CProgressCtrl* g_ptrProgress7 = NULL;UINT Thread1(LPVOID)
{while (g_uCount1 < 100000000 ){g_uCount1++;if (g_uCount1 % 10000000 == 0){if (g_ptrProgress1){g_ptrProgress1->SetPos(g_uCount1/1000000);} } }return 0;
}UINT Thread2(LPVOID)
{while (g_uCount2 < 100000000 ){g_uCount2++;if (g_uCount2 % 10000000 == 0){if (g_ptrProgress2){g_ptrProgress2->SetPos(g_uCount2/1000000);} } }return 0;
}UINT Thread3(LPVOID)
{while (g_uCount3 < 100000000 ){g_uCount3++;if (g_uCount3 % 10000000 == 0){if (g_ptrProgress3){g_ptrProgress3->SetPos(g_uCount3/1000000);} } }return 0;
}UINT Thread4(LPVOID)
{while (g_uCount4 < 100000000 ){g_uCount4++;if (g_uCount4 % 10000000 == 0){if (g_ptrProgress4){g_ptrProgress4->SetPos(g_uCount4/1000000);} } }return 0;
}UINT Thread5(LPVOID)
{while (g_uCount5 < 100000000 ){g_uCount5++;if (g_uCount5 % 10000000 == 0){if (g_ptrProgress5){g_ptrProgress5->SetPos(g_uCount5/1000000);} } }return 0;
}UINT Thread6(LPVOID)
{while (g_uCount6 < 100000000 ){g_uCount6++;if (g_uCount6 % 10000000 == 0){if (g_ptrProgress6){g_ptrProgress6->SetPos(g_uCount6/1000000);} } }return 0;
}UINT Thread7(LPVOID)
{while (g_uCount7 < 100000000 ){g_uCount7++;if (g_uCount7 % 10000000 == 0){if (g_ptrProgress7){g_ptrProgress7->SetPos(g_uCount7/1000000);} } }return 0;
}
代码分别是:每个线程各自使用的循环计数,每个进度条的指针定义,7个线程函数; 在每个线程函数根据计数设置不同的进度条的值;
在对话框的 OnInitDialog() 成员函数,在 “// TODO: Add extra initialization here” 这句之后,添加如下代码;根据进度条控件的ID获取其指针;
g_ptrProgress1 = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);g_ptrProgress2 = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS2);g_ptrProgress3 = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS3);g_ptrProgress4 = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS4);g_ptrProgress5 = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS5);g_ptrProgress6 = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS6);g_ptrProgress7 = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS7);
在单击处理函数,使用AfxBeginThread按照不同线程优先级来启动线程;AfxBeginThread函数的第一个参数是创建的线程的执行函数;
void CThrpriDlg::OnGo()
{// TODO: Add your control notification handler code here//创建7个不同优先级别的线程AfxBeginThread(Thread1,NULL,THREAD_PRIORITY_TIME_CRITICAL); AfxBeginThread(Thread2,NULL,THREAD_PRIORITY_HIGHEST); AfxBeginThread(Thread3,NULL,THREAD_PRIORITY_ABOVE_NORMAL); AfxBeginThread(Thread4,NULL,THREAD_PRIORITY_NORMAL); AfxBeginThread(Thread5,NULL,THREAD_PRIORITY_BELOW_NORMAL); AfxBeginThread(Thread6,NULL,THREAD_PRIORITY_LOWEST); AfxBeginThread(Thread7,NULL,THREAD_PRIORITY_IDLE);
}
运行如下图;开始,
运行到某个时刻,
结束;
MFC线程优先级程序图示相关推荐
- 多线程赛马程序Java_Java线程优先级示例-在各优先级线程间“赛马”
Java 虚拟机在调度各线程运行时,并非每个线程的运行机会相同,调度机制根据各线程的优先级调度各线程.因而,优先级高的线程获得的运行时间就多,优先级低的线程获得的运行时间就少.本例演示了不同优先级的线 ...
- [改善Java代码]线程优先级只使用三个等级
线程的优先级(priority)决定了线程获得CPU运行的机会,优先级越高获得的运行机会越大,优先级越低获得的机会越小.Java的线程有10个级别(准确的说是11个级别,级别为0的线程是JVM,应用程 ...
- 【C++ 语言】线程 ( 线程创建方法 | 线程标识符 | 线程属性 | 线程属性初始化 | 线程属性销毁 | 分离线程 | 线程调度策略 | 线程优先级 | 线程等待 )
文章目录 I 线程创建方法 II 线程执行函数 III 线程标识符 IV 线程属性 V 线程属性 1 ( 分离线程 | 非分离线程 ) VI 线程属性 2 ( 线程调度策略 ) VII 线程属性 3 ...
- python 测试 多线程 _thread和threading模块 线程同步,线程优先级队列
文章目录 python 多线程简介 Python中使用线程的两种方式 1.函数式 示例 2.线程模块 示例 线程同步 示例 线程优先级队列( Queue)[暂时没用到,没仔细看] 示例 其他 thre ...
- java多线程优先级的方法_Java多线程以及线程优先级
文章目录 1 继承Thread类多线程的实现获取和设置线程名称线程优先级 2 实现Runnable接口3 实现Callable接口4 使用线程池 1 继承Thread类 多线程的实现 实现多线程只需要 ...
- Android线程优先级设置方法技巧
对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题, 比如很多无关紧要的线程会占用大量的CPU时间,虽然通过了MultiThread来解决慢速I/O但是合理分配优先级对于并发编 ...
- Java 多线程:线程优先级
1 优先级取值范围 Java 线程优先级使用 1 ~ 10 的整数表示: 最低优先级 1:Thread.MIN_PRIORITY 最高优先级 10:Thread.MAX_PRIORITY 普通优先级 ...
- linux优先级队列,Python3 线程优先级队列( Queue)
导读 Python 的 Queue 模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue. ...
- ceSetThreadPriority设置线程优先级~!
ceSetThreadPriority 一直採用SetThreadPriority,结果今天发帖询问线程时间问题,才突然顿悟...发现SetThreadPriority只设置248-255,也就是说就 ...
最新文章
- Linux常用的网络命令笔记
- asp.net 6中的mini api和mvc api性能对比
- Windows上的Java线程CPU分析
- Java进阶 | Proxy动态代理机制详解
- keras padding_GAN整体思路以及使用Keras搭建DCGAN
- 来自百度的71款开源项目
- 20170829,记我第一次电面
- 181023词霸有道扇贝每日一句
- Win11更新后电脑没有声音,声卡驱动失效,卸载重装依然无效
- 关闭键盘按键声音和使用筛选键
- HTML+CSS项目练习(8)-发光文字动画
- iOS 15 导航栏(Navigation)变白(导航栏不见)
- 大赛来袭 | 千万项目商机+超40W大赛奖金,快来报名吧!
- 中国人工智能领域企业分类(附未来企业排行)
- C语言实验——用*号输出字母C的图案
- WPF将控件保存为图片
- 笔试题目---描述在浏览器中敲入一个网址并按下回车后所发生的事情
- 分布式项目中 nginx(FastFDS) 上传文件大小限制
- 四六级听力考试高频词汇分类记忆-职场工作类
- 【搜集】AVI解码器下载(AE导入avi时报错的解决办法)
热门文章
- 母亲,我怎么让你等了那么久(转载)
- 有关子矩阵最大累加和的总结
- hive分区用2个字段有何限制_关于Hive使用动态分区插入数据详解
- ueditor百度编辑器常见报错的解决方法
- C# 学习笔记(17)操作SQL Server 上
- C# Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0..65535)解决方法
- Factorial Trailing Zeroes
- CalcBackProject函数
- 图像去噪 使用dct变换进行去噪
- Sympy计算结果带参数的方程组