MFC事件在多執行緒中的使用

2021-08-21 12:07:33 字數 1346 閱讀 4451

handle mthreadeventdead;

mthreadeventdead=createevent(null,true,false,null)

上面建立了乙個事件,createevent的具體使用如下。

handle winapi createevent(

_in_opt_ lpsecurity_attributes lpeventattributes,

_in_ bool bmanualreset,

_in_ bool binitialstate,

_in_opt_ lpctstr lpname

);

第乙個引數:安全屬性,乙個指向security_attributes結構的指標,確定返回的控制代碼是否可被子程序繼承。如果lpeventattributes是null,此控制代碼不能被繼承。

第二個引數:復位方式,指定將事件物件建立成手動復原還是自動復原。如果是true,那麼必須用resetevent函式來手工將事件的狀態復原到無訊號狀態。如果設定為false,當乙個等待執行緒被釋放以後,系統將會自動將事件狀態復原為無訊號狀態。

第三個引數:初始狀態.

第四個引數:物件名稱,如果lpname為null,將建立乙個無名的事件物件.

上面的**將事件的初始狀態設定為false。

void m_thread(void *param)

當執行緒函式執行完時,將事件啟用,然後通過這個判斷執行緒是否結束。

setevent(mthreadeventdead)將事件從初始狀態false(未激發)啟用為true(激發)狀態

resetevent(mthreadeventdead)重新將事件設定為未激發狀態。

waitforsingleobject(mthreadeventdead, infinite);
waitforsingleobject的具體定義如下:

dword waitforsingleobject( handle hhandle, dworddwmilliseconds);
當hhandle處於signed狀態則該函式正常返回,如果hhandle未被啟用狀態,則該函式陷入沉睡即堵塞程式繼續向下執行,通常用於等待執行緒停止才能雲執行的程式上面。

使用完了記得關閉事件:

closehandle(mthreadeventdead);

mthreadeventdead = null;

C 在MFC中建立多執行緒

背景 在一台比較老的計算機上做的影象實時採集與繪製,同時還要顯示溫度場,單執行緒工作太卡 方案 afxbeginthread在mfc中不需要新增額外的標頭檔案 uint threadproc lpvoid lparam void cdemodlg kmeanssegment void cdemodl...

MFC多執行緒使用

筆記 檔案讀寫。再讀取按鈕呼叫 uint mythreadfunction lpvoid pparam thread執行緒操作 字串處理存入map容器 strpath filedlg.getpathname 獲取檔案名字 路徑 file.open strpath,cfile moderead 以唯讀...

事件在多執行緒程式設計中的應用

在多執行緒程式設計時,常常需要在幾個執行緒之間進行切換,在切換的同時需要同步訪問共享變數,而事件就是同步的其中一種方式 createevent可以有兩種方式來建立事件,一種是以人工重置的方式,另一種是以自動重置的方式,在使用自動重置的事件時,當該事件有訊號之後就會重置該訊號,意思就是說使該訊號變為無...