多線程 AfxBeginThread 與 CreateThread 的區別

來源:互聯網
上載者:User
 AfxBeginThread 與 CreateThread 的區別

簡言之:

  AfxBeginThread是MFC的全域函數,是對CreateThread的封裝。

    CreateThread是Win32 API函數,前者最終要調到後者。

1>.
具體說來,CreateThread這個 函數是windows提供給使用者的 API函數,是SDK的標準形式,在使用的過

程中要考慮到進程的同步與互斥的關係,進程間的同步互斥等一系列會導致作業系統死結的因素,用起來

比較繁瑣一些,初學的人在用到的時候可能會產生不可預料的錯誤,建議多使用AfxBeginThread,是編譯

器對原來的CreateThread函數的封裝,用與MFC編程(當然,只要修改了項目屬性,console和win32項目

都能調用)而_beginthread是C的運行庫函數。

2>
在使用AfxBeginThread時,
線程函數的定義為:UINT   _yourThreadFun(LPVOID   pParam)參數必須如此

在使用CreateThread時,
線程的函數定義為: DWORD WINAPI _yourThreadFun(LPVOID pParameter)

兩者實質是一樣的,
不過AfxBeginThread返回CWinThread指標,就是說它會new一個CWinThread對象,而這個對象線上程運行結束時是會自動刪除的,

CreatThread,它返回的是一個控制代碼,如果你不使用CloseHandle的話就可以通過它安全的瞭解線程狀態,

最後不要的時候CloseHandle,Windows才會釋放資源

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.