程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ AfxBeginThread和AfxEndThread 使用方法,afxbeginthread

C++ AfxBeginThread和AfxEndThread 使用方法,afxbeginthread

編輯:C++入門知識

C++ AfxBeginThread和AfxEndThread 使用方法,afxbeginthread


啟動線程:

CWinThread* AfxBeginThread( 線程函數,this );

線程的退出:

在剛剛使用的時候,退出線程的方法有問題,導致退出的時候異常。

下面說線程退出的方法:

1. 線程函數返回

線程都在死循環中,當滿足一定條件時,return,也會將線程結束。

2. AfxEndThread

這個函數只能用在線程函數中,當滿足一定條件是,調用。

舉一個例子:

可以創建一個信號量,用WaitForSingleObject函數來檢測該信號量的狀態。

成員變量 m_hThreadEvent;

m_hThreadEvent = CreateEvent( NULL, FALSE, FALSE, NULL );

線程的執行函數:

for ( ; ; )

{

DWORD dwRetVal;

dwRetVal = WaitForSingleObject( m_hThreadEvent, 100 );

if ( dwRetVal == WAIT_TIMEOUT )

{

// TODO:

}

else

{

// stop receive text thread.

DWORD dwExitCode;

GetExitCodeThread( m_pThreadRecv->m_hThread, &dwExitCode );

AfxEndThread( dwExitCode, TRUE );

}

}
要結束線程時,使用SetEvent,將信號量置為有信號。

該線程是在信號量有信號時,退出。

3. TerminateThread

在CWinThread對象中有線程的句柄,可以使用該句柄強行殺死線程。但是不推薦使用這種方式,當可以正常結束的時候,選擇前兩種方法較好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved