日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MFC线程优先级程序图示

發布時間:2025/4/14 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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线程优先级程序图示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。