win32 API 線程編程

DWORD WaitForMultipleObject(

DWORD dwCount ,

CONST HANDLE* phObject, 

BOOL fWaitAll, 

DWORD dwMillisecinds);

------------------------------Win32 API 線程相關函數---------------------------------------------------------------
Win32 提供了一系列的API函數來完成線程的創建、掛起、恢復、終結以及通信等工作。下面將選取其中的一些重要函數進行說明。 
(1) HANDLE CreateThread(
    	LPSECURITY_ATTRIBUTES lpThreadAttributes,//指向一個 SECURITY_ATTRIBUTES 結構的指針,該結構決定了線程的安全屬性,一般置爲 NULL;
        DWORD dwStackSize,  //指定了線程的堆棧深度,一般都設置爲0;
        LPTHREAD_START_ROUTINE lpStartAddress,//表示新線程開始執行時代碼所在函數的地址,即線程的起始地址。
                                                       //一般情況爲(LPTHREAD_START_ROUTINE)ThreadFunc,ThreadFunc 是線程函數名;
        LPVOID lpParameter,//指定了線程執行時傳送給線程的32位參數,即線程函數的參數;
        DWORD dwCreationFlags,//控制線程創建的附加標誌,可以取兩種值。如果該參數爲0,線程在被創建後就會立即開始執行;
                                       //如果該參數爲CREATE_SUSPENDED,則系統產生線程後,該線程處於掛起狀態,並不馬上執行,直至函數ResumeThread被調用;
        LPDWORD lpThreadId //該參數返回所創建線程的ID;
);
         該函數在其調用進程的進程空間裏創建一個新的線程,並返回已建線程的句柄。
	
(2) DWORD SuspendThread(HANDLE hThread); 

該函數用於掛起指定的線程,如果函數執行成功,則線程的執行被終止。
(3) DWORD ResumeThread(HANDLE hThread);
	該函數用於結束線程的掛起狀態,執行線程。 
(4) VOID ExitThread(DWORD dwExitCode);
 	該函數用於線程終結自身的執行,主要在線程的執行函數中被調用。其中參數dwExitCode用來設置線程的退出碼。 
(5) BOOL TerminateThread(
            	HANDLE hThread,//將被終結的線程的句柄;
            	DWORD dwExitCode //用於指定線程的退出碼。
            );
一般情況下,線程運行結束之後,線程函數正常返回,但是應用程序可以調用TerminateThread強行終止某一線程的執行。
	使用TerminateThread()終止某個線程的執行是不安全的,可能會引起系統不穩定;雖然該函數立即終止線程的執行,但並不釋放線程所佔用的資源。因此,一般不建議使用該函數。 
(6)BOOL PostThreadMessage(
           	DWORD idThread,//將接收消息的線程的ID;
           	UINT Msg,//指定用來發送的消息;
           	WPARAM wParam,//同消息有關的字參數
           	LPARAM lParam//同消息有關的長參數;
           );
	該函數將一條消息放入到指定線程的消息隊列中,並且不等到消息被該線程處理時便返回。
	調用該函數時,如果即將接收消息的線程沒有創建消息循環,則該函數執行失敗。

發佈了22 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章