做專案中涉及到多執行緒的操作,所以學習了一下mfc中多執行緒的用法!
包括控制代碼的定義、初始化,執行緒函式的定義、初始化,鎖的使用。
控制代碼的定義:
cwinthread* thread1;
執行緒函式的定義:
static uint thread1_func(lpvoid lpparam);
加static表示函式歸類本身所有。
鎖的定義:
handle hmutex1;//互斥鎖
控制代碼初始化:
thread1 = afxbeginthread(thread1_func, this, 0, 0, create_suspended, null);
this表示傳入this指標,執行緒可以使用物件資料成員和成員函式。create_suspended表示以阻塞方式建立執行緒。
控制代碼控制線程執行與掛起:
q->thread1->suspendthread();//執行緒自己控制自己掛起
thread1->resumethread();//恢復執行緒,主線程控制
鎖的使用:
hmutex1 = createmutex(null, false, null);
waitforsingleobject(q->hmutex1, infinite);//等待獲得互斥鎖
releasemutex(q->hmutex1); // 釋放互斥鎖
MFC中多執行緒的應用
一.使用執行緒步驟 1.定義執行緒函式傳遞引數結構 如 typedef struct tagthreadparms threadparms 2.定義執行緒函式 如 uint read lpvoid pparam 3.啟動執行緒 如 threadparms ptp new threadparms 初始...
MFC中多執行緒問題
mfc中多執行緒問題 問題是這樣的 我們程式設計涉及到乙個多執行緒問題,當把執行緒函式定義為全域性時正常,而定義為類的成員函式時就會出錯。說錯誤是afxbeginthread不能從unsinged int void 轉換為第乙個引數。我在google上搜尋了一下,找到了幾個解決方案。cpp 1.cl...
MFC中多執行緒總結
前言 對於寫mfc介面來說,如果某個訊息對映函式流程執行時間太長,有太多的sleep 和 while 1 會導致執行緒時間過長,mfc介面卡死,因此需要學會用多執行緒 思路 1.建立流程 2.建立執行緒呼叫的函式 3.結束執行緒 第一步 建立執行緒 cwinthread m pthread m pt...