MFC线程优先级程序图示
線程優(yōu)先級(jí)等級(jí)描述如下;
idle????? (最低)??? THREAD_PRIORITY_IDLE
LOWEST? 低??? THREAD_PRIORITY_LOWEST
BELOW?? 低于標(biāo)準(zhǔn)??? THREAD_PRIORITY_BELOW_NORMAL
NORMAL(標(biāo)準(zhǔn))??? THREAD_PRIORITY_NORMAL
ABOVE??? 高于標(biāo)準(zhǔn)??? THREAD_PRIORITY_ABOVE_NORMAL
HIGHEST (高)??? THREAD_PRIORITY_HIGHEST
CRITICAL(最高)??? THREAD_PRIORITY_TIME_CRITICAL
Win7,VC6,新建一個(gè)對(duì)話框工程;添加7個(gè)進(jìn)度條控件;其每個(gè)控件的ID為IDC_PROGRESSx;
添加一個(gè)按鈕;添加按鈕的單擊函數(shù);
對(duì)話框Cpp文件頭部添加如下代碼;
static UINT g_uCount1 = 0; static UINT g_uCount2 = 0; static UINT g_uCount3 = 0; static UINT g_uCount4 = 0; // 各個(gè)線程各自的循環(huán)計(jì)數(shù) 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; //各個(gè)進(jìn)度條的指針 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; }代碼分別是:每個(gè)線程各自使用的循環(huán)計(jì)數(shù),每個(gè)進(jìn)度條的指針定義,7個(gè)線程函數(shù);? 在每個(gè)線程函數(shù)根據(jù)計(jì)數(shù)設(shè)置不同的進(jìn)度條的值;
在對(duì)話框的 OnInitDialog() 成員函數(shù),在??? “// TODO: Add extra initialization here”??? 這句之后,添加如下代碼;根據(jù)進(jìn)度條控件的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);在單擊處理函數(shù),使用AfxBeginThread按照不同線程優(yōu)先級(jí)來(lái)啟動(dòng)線程;AfxBeginThread函數(shù)的第一個(gè)參數(shù)是創(chuàng)建的線程的執(zhí)行函數(shù);
void CThrpriDlg::OnGo() {// TODO: Add your control notification handler code here//創(chuàng)建7個(gè)不同優(yōu)先級(jí)別的線程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); }運(yùn)行如下圖;開(kāi)始,
運(yùn)行到某個(gè)時(shí)刻,
結(jié)束;
?
總結(jié)
以上是生活随笔為你收集整理的MFC线程优先级程序图示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VC++读写INI文件示例
- 下一篇: C语言宏定义中使用 do{}while(