C++多線程編程——線程的掛起、喚醒與終止

 

在線程 建立並運行後,用戶能夠對線程執行 掛起 終止操做.所謂 掛起, 是指暫停線程的執行,用戶能夠經過氣候的 喚醒操做來恢復線程的執行. 線程 終止 是指結束線程的運行 .系統提供了 SuspendThread,ResumeThread TerminateThread等函數來實現線程的 掛起、 喚醒 和中止操做。

SuspendThread
該函數用於掛起線程.語法格式以下:
DWORD SuspendThread(HANDLE hThread);
·         hThread: 表示線程句柄
·         返回值: 若是函數執行成功,返回值爲以前掛起的線程次數;若是函數執行失敗,返回值爲0xFFFFFFFF
ResumeThread
該函數用於煎炒線程掛起的次數,若是線程掛起的次數爲0,將 喚醒線程.語法格式以下:
DWORD ResumeThread(HANDLE hThread);
·         hThread: 表示線程句柄
·         返回值: 若是函數執行成功,返回值爲以前掛起的線程次數;若是函數執行失敗,返回值爲0xFFFFFFFF
ExitThread
該函數用於結束當前線程.語法格式以下:
VOID ExitThread(DWORD dwExitCode);
·         dwExitCode: 表示線程退出代碼
TerminateThread
該函數用於強制 終止線程的執行.語法格式以下:
BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);
·         hThread: 表示待終止的線程句柄
·         dwExitCode: 表示線程退出代碼
例子 :
線程代碼:
DWORD __stdcall ThreadProc(LPVOID lpParameter) { CMultiThreadDlg * pdlg = (CMultiThreadDlg *)lpParameter; pdlg->m_ProCtrl.SetRange32(0,99999); for (int i = 0; i < 99999; i++) { pdlg->m_ProCtrl.SetPos(i); } return 0; }
void CMultiThreadDlg::OnBtCreate() { m_hThread = CreateThread(NULL,0,ThreadProc,this,0,NULL); }
掛起線程:
void CMultiThreadDlg::OnBtSuspend() { SuspendThread(m_hThread); }
喚醒線程:
void CMultiThreadDlg::OnBtResume() { ResumeThread(m_hThread); }
終止線程:
void CMultiThreadDlg::OnBtTerminate() { TerminateThread(m_hThread); }
相關文章
相關標籤/搜索