WIN32多線程程式設計學習筆記(第二章)

來源:互聯網
上載者:User
WIN32多線程程式設計學習筆記(第二章) 《WIN32多線程程式設計》這本書也看了好多遍,但總是覺得印象不深;我想是不是應該做做筆記,一來可以加深一下印象。二也在可以在用時方便查閱。J 首先,我覺得線程一點都不難(這樣的心理暗示會使我覺得學的輕鬆一些); why? 與 調用函數的過程類似;線程只不過用CreateThread的API將 函數

HANDLE hThread = CreateThread (LPSECURITY_ATTRIBUTES lpThreadAtt,  DWORD dwStackSize  LPTHREAD_START_ROUTINE lpFun,  LPVOID lpParameter,  DWORD dwCreationFlags,  LPDWORD lpThreadID)LpFun:就是指向被封裝的函數的地址。LpParameter: 就是指向被封裝的函數的參數(沒有參數填入null)圖示: CreateThread()除了LpFun,LpParameter兩個參數極為重要外,它的其它的參數有啥用的?當然的有用了,具體使用的時候查協助就行了,實在不會,那就設為null得了。當調用CreateThread()後,會產生線程核心對象(如果已經產生了線程核心對象,那麼就只將此核心對象的引用計數加1;另外,win32系統中有若干種核心對象),並以控制代碼的方式代表它。那麼,顯然,線上程使用完畢後就應該用CloseHandle()函數關閉。 既然線程是獨立的啟動並執行程式,那麼主程式如何知道線程執行完畢呢?答案是通過GetExitCodeThread(HANDLE hThread,LPDWORD lpExitCode)函數。如果線程已結束,那麼線程結束的代碼被放在lpExitCode參數中帶回來,如果線程尚未結束,lpExitCode帶回來的值是STILL_ACTIVE。 值得注意的是:GetExitCodeThread(HANDLE hThread,LPDWORD lpExitCode)還可以帶回線程函數的傳回值。lpExitCode就是函數的傳回值               例:   線程函數:DWORD WINAPI ThreadFun(LPVOID n){                        return 10;}          int main(){hThrd = CreateThread(null,ThreadFun,…..);DWORD  exitCode=0;                 for(  ;  ; )               {            GetExitCodeThread(hThrd,&exitCode);           If ( exitCode == STILL_ACTIVE)             {                            //線程仍然在運行                 }                else                {                            break;                }}//exitCode儲存了函數的傳回值10printf(“線程函數的傳回值: %d /n”, exitCode);CloseHandle(hThrd);Return 0;         }        這一章節的內容大概就是這麼多,總結一下: * 產生一個線程                  [ CreateThread()   ] * 判斷線程是否結束              [  GetExitCodeThread ()   ] * 關閉線程                                  [  CloseHandle ()   ] * 強制退出線程                  [  ExitThread ()   ]   附註:以上本文純屬加強記憶所做筆記,內容或有不詳,甚至錯誤,請閱者見諒,匆見怪!!!

 

封裝起來,並 產生一個與主程式同時執行的程式來調用被封裝的函數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.