windows api線程


一、
1、定義入口函數
static void  threadFunc(void);//在TestDlg.h里面聲明

 void CTestDlg::threadFunc(void)     //在TestDlg.cpp里定義

  {
  Sleep(1000);
  AfxMessageBox(_T("OK!"));
  }

2、定義線程句柄:
 HANDLE hthread; //線程句柄
3、獲取線程句柄:
函數原型:
static HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa,//訪問級別 DWORD dwStackSize,      //棧大小 LPTHREAD_START_ROUTINE pfnThreadProc,//線程函數 void* pvParam,        //函數傳遞參數 DWORD dwCreationFlags,  //啟動方式 DWORD* pdwThreadId     //返回ID ) throw( );

  hthread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)threadFunc,NULL,0,NULL);//獲得句柄

 4、關閉句柄
  CloseHandle(hthread);//並不會關閉線程

 二、一些函數

  1、DWORD SuspendThread(HANDLE hThread); 該函數用於掛起指定的線程,如果函數執行成功,則線程的執行被終止。

  2、 DWORD ResumeThread(HANDLE hThread); 該函數用於結束線程的掛起狀態,執行線程。

  3、VOID ExitThread(DWORD dwExitCode); 該函數用於線程終結自身的執行,主要在線程的執行函數中被調用。其中參數dwExitCode用來設置線程的退出碼。             4、 BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode); 一般情況下,線程運行結束之后,線程函數正常返回,但是應用程序可以調用TerminateThread強行終止某一線程的執行。各參數含義如下:hThread:將被終結的線程的句柄;dwExitCode:用於指定線程的退出碼。     

  使用 TerminateThread()終止某個線程的執行是不安全的,可能會引起系統不穩定;雖然該函數立即終止線程的執行,但並不釋放線程所占用的資源。因此,一般不建議使用該函數。      

5、BOOL PostThreadMessage(DWORD idThread,UINT Msg,  WPARAM wParam,  LPARAM lParam);  

該函數將一條消息放入到指定線程的消息隊列中,並且不等到消息被該線程處理時便返回。  
  
idThread:將接收消息的線程的ID;   
  
Msg:指定用來發送的消息;   
  
wParam:同消息有關的字參數;   
  
lParam:同消息有關的長參數;   
  
調用該函數時,如果即將接收消息的線程沒有創建消息循環,則該函數執行失敗。

 二、多線程同步
  1、CreateMutex(互斥對象)
  2、WaitFirSingleObject
  3、ReleaseMutex


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM