欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

MFC线程优先级程序图示

发布时间:2025/4/14 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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线程优先级程序图示的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。