C++多執行緒例項(執行緒的建立—排程—正確結束)
C++中的多執行緒程式設計時一個非常複雜的東西,使用過程中一定要注意執行緒的排程和結束。那麼為什麼要用多執行緒呢?舉一個例子,介面裡有個按鈕,按鈕按下後,這個操作需要非常長的時間才能完成,那麼在操作未完成之前,會將介面卡死,無法進行其他操作,這就是需要多執行緒的原因,一個主執行緒維持介面的執行,其他的執行緒在後臺執行,進行其他需要的操作。
首先,要定義執行緒控制代碼:
//執行緒控制代碼
HANDLE hThreadRadar;
然後對執行緒進行宣告:
//執行緒函式定義的宣告
void RadarDataWriteThread();
編寫執行緒函式的過程中,執行緒內部一般是while構成的死迴圈,其中ThreadRunFlag是一個自己定義的volatileBOOL型別的標誌位,這個變數也可以不定義,但是為了控制程序的執行,方便進行執行緒的排程
//決定執行緒是否執行的Flag標誌位
volatile BOOL ThreadRunFlag;
while(ThreadRunFlag )
{
//裡面寫著你需要進行的操作
}
然後,在程式需要的位置開啟執行緒:
//開啟資料回放執行緒
hThreadRadar= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)RadarDataWriteThread,NULL,0,NULL);
//關閉控制代碼佔用
CloseHandle(hThreadRadar);
開啟完執行緒之後,立即關閉執行緒控制代碼,目的是進行資源釋放,控制代碼關閉後,執行緒仍在執行,在程式關閉的程式碼中,需要結束所有的執行緒,一般是在on close或者on destroy中進行響應:
//結束所有執行緒
TerminateProcess(GetCurrentProcess(),0);