VC++ AfxBeginThread 与 CreateThread 的区别
簡言之:
AfxBeginThread是MFC的全局函數(shù),是對CreateThread的封裝。
??? CreateThread是Win32 API函數(shù),前者最終要調(diào)到后者。
具體說來,CreateThread這個 函數(shù)是windows提供給用戶的 API函數(shù),是SDK的標(biāo)準(zhǔn)形式,在使用的過
程中要考慮到進(jìn)程的同步與互斥的關(guān)系,進(jìn)程間的同步互斥等一系列會導(dǎo)致操作系統(tǒng)死鎖的因素,用起來
比較繁瑣一些,初學(xué)的人在用到的時候可能會產(chǎn)生不可預(yù)料的錯誤,建議多使用AfxBeginThread,是編譯
器對原來的CreateThread函數(shù)的封裝,用與MFC編程(當(dāng)然,只要修改了項(xiàng)目屬性,console和win32項(xiàng)目
都能調(diào)用)而_beginthread是C的運(yùn)行庫函數(shù)。
2>
在使用AfxBeginThread時,
線程函數(shù)的定義為:UINT?? _yourThreadFun(LPVOID?? pParam)??? 參數(shù)必須如此
在使用CreateThread時,
線程的函數(shù)定義為: DWORD WINAPI _yourThreadFun(LPVOID pParameter)
兩者實(shí)質(zhì)是一樣的,
不過AfxBeginThread返回CWinThread指針,就是說它會new一個CWinThread對象,而這個對象在線程運(yùn)行結(jié)束時是會自動刪除的,
CreatThread,它返回的是一個句柄,如果你不使用CloseHandle的話就可以通過它安全的了解線程狀態(tài),
最后不要的時候CloseHandle,Windows才會釋放資源
總結(jié)
以上是生活随笔為你收集整理的VC++ AfxBeginThread 与 CreateThread 的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 输出当前月所有日期与对应的星
- 下一篇: VC++ error C2248: “