多線程編程實(shí)例

多線程編程實(shí)例

ID:41032686

大?。?4.00 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2019-08-14

多線程編程實(shí)例_第1頁(yè)
多線程編程實(shí)例_第2頁(yè)
多線程編程實(shí)例_第3頁(yè)
多線程編程實(shí)例_第4頁(yè)
資源描述:

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

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

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

3、veloperStudio為程序員提供了一些工具來(lái)管理用戶源程序,其缺點(diǎn)是類庫(kù)代碼很龐大。由于使用類庫(kù)所帶來(lái)的快速、簡(jiǎn)捷和功能強(qiáng)大等優(yōu)越性,因此除非有特殊的需要,否則VisualC++推薦使用MFC類庫(kù)進(jìn)行程序開(kāi)發(fā)。  我們知道,MFC中的線程分為兩種:用戶界面線程和工作者線程。我們將分別舉例說(shuō)明?! ∮肕FC類庫(kù)編程實(shí)現(xiàn)工作者線程  例程5MultiThread5  為了與Win32API對(duì)照,我們使用MFC類庫(kù)編程實(shí)現(xiàn)例程3MultiThread3?! 〗⒁粋€(gè)基于對(duì)話框的工程MultiThread5,在對(duì)話框IDD_MULTITHREAD5_DIAL

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

5、.  線程函數(shù)的聲明:UINTThreadFunc(LPVOIDlpParam);  注意,二者應(yīng)在類CMultiThread5Dlg的外部。  在類CMultiThread5Dlg內(nèi)部添加protected型變量:CWinThread*pThread;  在MultiThread5Dlg.cpp文件中進(jìn)行如下操作:定義公共變量: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()中添加語(yǔ)句:{  ……  //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類庫(kù)編程實(shí)現(xiàn)用戶界面線程1. 

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

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

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