mfc創(chuàng)建線程的三種方法 工作者線程和用戶界面線程?
工作者線程和用戶界面線程?1)接口最好放在統(tǒng)一管理的線程中。2)3)在MFC中,如果主界面收到WM_uquitmeans關(guān)閉窗口,則主線程將退出/返回/返回。4) 當(dāng)主線程退出時(shí),無(wú)論執(zhí)行是否完成,其
工作者線程和用戶界面線程?
1)接口最好放在統(tǒng)一管理的線程中。
2)3)在MFC中,如果主界面收到WM_uquitmeans關(guān)閉窗口,則主線程將退出/返回/返回。4) 當(dāng)主線程退出時(shí),無(wú)論執(zhí)行是否完成,其他輔助線程都會(huì)因?yàn)橹骶€程的退出而退出。主線程的退出意味著進(jìn)程的結(jié)束。房東說(shuō)的不夠準(zhǔn)確。我的理解是:在工作線程計(jì)算時(shí),主線程的主界面不負(fù)責(zé)顯示工作進(jìn)度。只要存在一個(gè)工作線程,主界面就應(yīng)該創(chuàng)建一個(gè)界面來(lái)顯示工作線程的工作進(jìn)度。如果工作線程已完成,則進(jìn)度顯示界面也應(yīng)消失。如果邏輯是這樣的,那么布局可以如下:1)定義進(jìn)度接口的窗口類。為了與工作線程通信,需要為progress接口的window類自定義各種自定義消息,并且該類的window實(shí)例應(yīng)該用作主接口的子窗口。當(dāng)主界面關(guān)閉時(shí),它也將作為子窗口關(guān)閉。2) 工作線程應(yīng)該由主接口創(chuàng)建,進(jìn)度接口也應(yīng)該由主接口創(chuàng)建。
3)工作線程報(bào)告工作進(jìn)度,主界面不干預(yù)。報(bào)表工作通過工作線程和進(jìn)度接口之間的用戶定義消息直接實(shí)現(xiàn)。
4)工作線程需要在返回之前將完成消息發(fā)送到主界面。
5)所有線程都有“完成信號(hào)”狀態(tài),即線程運(yùn)行時(shí)處于無(wú)信號(hào)狀態(tài),線程退出后處于信號(hào)狀態(tài)。如果不熟悉,可以看一下“系統(tǒng)編程”的相關(guān)內(nèi)容。使用此功能,主線程在接收到來(lái)自工作線程的完成消息后,會(huì)調(diào)用WaitForSingleObject來(lái)臨時(shí)阻塞自身。阻塞將導(dǎo)致主界面無(wú)法響應(yīng)用戶的鼠標(biāo)和鍵盤消息,形成掛起動(dòng)畫狀態(tài)。但這幾乎看不見。主線程僅在從工作線程接收到消息后才調(diào)用WaitForSingleObject。但是,工作線程此時(shí)基本上已退出。因此,WaitForSingleObject幾乎不用等待就返回。因此,阻塞主接口的估計(jì)值小于1秒。即使在最壞的情況下,當(dāng)多個(gè)工作線程同時(shí)完成時(shí),主接口也需要依次調(diào)用WaitForSingleObject,沒有問題。6) WaitForSingleObject返回,表示工作線程已完成工作,并且主接口可以安全地關(guān)閉progress interface窗口。