1. 程式人生 > >C++多執行緒例項(執行緒的建立—排程—正確結束)

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);