多線程編程實例

多線程編程實例

ID:41032686

大小:34.00 KB

頁數(shù):4頁

時間:2019-08-14

多線程編程實例_第1頁
多線程編程實例_第2頁
多線程編程實例_第3頁
多線程編程實例_第4頁
資源描述:

《多線程編程實例》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、一般情況下,調(diào)用AfxBeginThread()來一次性地創(chuàng)建并啟動一個線程,但是也可以通過兩步法來創(chuàng)建線程:首先創(chuàng)建CWinThread類的一個對象,然后調(diào)用該對象的成員函數(shù)CreateThread()來啟動該線程?! irtualBOOLCWinThread::InitInstance();  重載該函數(shù)以控制用戶界面線程實例的初始化。初始化成功則返回非0值,否則返回0。用戶界面線程經(jīng)常重載該函數(shù),工作者線程一般不使用InitInstance()?! irtualintCWinThread::ExitInstance();  在線程終結(jié)前重載該函數(shù)

2、進行一些必要的清理工作。該函數(shù)返回線程的退出碼,0表示執(zhí)行成功,非0值用來標識各種錯誤。同InitInstance()成員函數(shù)一樣,該函數(shù)也只適用于用戶界面線程。(UI)步驟/方法1.MFC多線程編程實例  在VisualC++6.0編程環(huán)境中,我們既可以編寫C風(fēng)格的32位Win32應(yīng)用程序,也可以利用MFC類庫編寫C++風(fēng)格的應(yīng)用程序,二者各有其優(yōu)缺點。基于Win32的應(yīng)用程序執(zhí)行代碼小巧,運行效率高,但要求程序員編寫的代碼較多,且需要管理系統(tǒng)提供給程序的所有資源;而基于MFC類庫的應(yīng)用程序可以快速建立起應(yīng)用程序,類庫為程序員提供了大量的封裝類,而且De

3、veloperStudio為程序員提供了一些工具來管理用戶源程序,其缺點是類庫代碼很龐大。由于使用類庫所帶來的快速、簡捷和功能強大等優(yōu)越性,因此除非有特殊的需要,否則VisualC++推薦使用MFC類庫進行程序開發(fā)?! ∥覀冎溃琈FC中的線程分為兩種:用戶界面線程和工作者線程。我們將分別舉例說明?! ∮肕FC類庫編程實現(xiàn)工作者線程  例程5MultiThread5  為了與Win32API對照,我們使用MFC類庫編程實現(xiàn)例程3MultiThread3。  建立一個基于對話框的工程MultiThread5,在對話框IDD_MULTITHREAD5_DIAL

4、OG中加入一個編輯框IDC_MILLISECOND,一個按鈕IDC_START,標題為“開始”,一個進度條IDC_PROGRESS1;  打開ClassWizard,為編輯框IDC_MILLISECOND添加int型變量m_nMilliSecond,為進度條IDC_PROGRESS1添加CProgressCtrl型變量m_ctrlProgress;  在MultiThread5Dlg.h文件中添加一個結(jié)構(gòu)的定義:structthreadInfo  {  UINTnMilliSecond;  CProgressCtrl*pctrlProgress;  };2

5、.  線程函數(shù)的聲明:UINTThreadFunc(LPVOIDlpParam);  注意,二者應(yīng)在類CMultiThread5Dlg的外部?! ≡陬怌MultiThread5Dlg內(nèi)部添加protected型變量:CWinThread*pThread;  在MultiThread5Dlg.cpp文件中進行如下操作:定義公共變量:threadInfoInfo;  雙擊按鈕IDC_START,添加相應(yīng)消息處理函數(shù):  voidCMultiThread5Dlg::OnStart()  {  //TODO:Addyourcontrolnotificationha

6、ndlercodehere  UpdateData(TRUE);  Info.nMilliSecond=m_nMilliSecond;  Info.pctrlProgress=&m_ctrlProgress;  pThread=AfxBeginThread(ThreadFunc,  &Info);  }  在函數(shù)BOOLCMultiThread3Dlg::OnInitDialog()中添加語句:{  ……  //TODO:Addextrainitializationhere  m_ctrlProgress.SetRange(0,99);  m_nMilli

7、Second=10;  UpdateData(FALSE);  returnTRUE;//returnTRUEunlessyousetthefocustoacontrol  }  添加線程處理函數(shù):UINTThreadFunc(LPVOIDlpParam)  {  threadInfo*pInfo=(threadInfo*)lpParam;  for(inti=0;i<100;i++)  {  intnTemp=pInfo->nMilliSecond;  pInfo->pctrlProgress->SetPos(i);  Sleep(nTemp);  } 

8、 return0;  }  用MFC類庫編程實現(xiàn)用戶界面線程1. 

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。