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线程优先级程序图示的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: VC++读写INI文件示例
- 下一篇: C语言宏定义中使用 do{}while(