关于afxbeginthread时WaitForMultipleObjects不起作用
afxbeginthread時(shí),對(duì)這個(gè)方法蠻感興趣的,創(chuàng)建線程很方便,但是我注意了下,該函數(shù)返回的不是創(chuàng)建線程的句柄,而是cwndthread的指針對(duì)象,而我想用WaitForMultipleObjects等待線程返回,該怎么辦呢,cwndthread里有一個(gè)m_hThread對(duì)象,是創(chuàng)建線程的句柄.我以為這樣就可以了,但是在實(shí)際寫(xiě)代碼中卻出現(xiàn)了很大的問(wèn)題,WaitForMultipleObjects不起作用,我很郁悶,看了下cwndthread的結(jié)構(gòu)以及實(shí)現(xiàn)代碼,才恍然大悟,原來(lái),用afxbeginthread創(chuàng)建的線程在結(jié)束時(shí),會(huì)自動(dòng)釋放對(duì)象,關(guān)閉句柄,清理內(nèi)存,這一切都是在cwndthread的析構(gòu)函數(shù)里進(jìn)行,不需要外界的干預(yù),看了下說(shuō)明
設(shè)置CWinThread成員變量m_bAutoDelete為FALSE,這樣當(dāng)線程中止時(shí)線程對(duì)象不會(huì)被撤銷(xiāo),因此仍然可以獲得線程句柄。
?注意:因?yàn)榫€程對(duì)象在線程中止時(shí)不能自動(dòng)撤銷(xiāo),所以必須由用戶進(jìn)行撤銷(xiāo)。
?? if (m_pThread1 != NULL)
????{
????????delete m_pThread1;
????????m_pThread1 = NULL;
????}
總結(jié)
以上是生活随笔為你收集整理的关于afxbeginthread时WaitForMultipleObjects不起作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。