使用waitforsingleobject函式來等待乙個核心物件變為已通知狀態:
dword waitforsingleobject(
handle hobject, //指明乙個核心物件的控制代碼
dword dwmilliseconds //等待時間
);
該函式需要傳遞乙個核心物件控制代碼,該控制代碼標識乙個核心物件,如果該核心物件處於未通知狀態,則該函式導致執行緒進入阻塞狀態;如果該核心物件處於已通知狀態,則該函式立即返回wait_object_0。
第二個引數指明了需要等待的時間(毫秒),可以傳遞infinite指明要無限期等待下去,如果第二個引數為0,那麼函式就測試同步物件的狀態並立即返回。如果等待超時,該函式返回wait_timeout。如果該函式失敗,返回wait_failed。可以通過下面的**來判斷:
dword dw = waitforsingleobject(hprocess, 5000); //等待乙個程序結束
switch (dw)
使用waitformulitpleobjects函式來等待多個核心物件變為已通知狀態:
dword waitformultipleobjects(
dword dwcount, //等待的核心物件個數
const handle* phobjects, //乙個存放被等待的核心物件控制代碼的陣列
bool bwaitall, //是否等到所有核心物件為已通知狀態後才返回
dword dwmilliseconds //等待時間
);
該函式失敗,返回wait_failed;如果超時,返回wait_timeout;如果bwaitall引數為true,函式成功則返回wait_object_0,如果bwaitall為false,函式成功則返回值指明是哪個核心物件收到通知。
可以如下使用該函式:
handle h[3]; //控制代碼陣列
//三個程序控制代碼
h[0] = hprocess1;
h[1] = hprocess2;
h[2] = hprocess3;
dword dw = waitformultipleobjects(3, h, false, 5000); //等待3個程序結束
switch (dw)
MFC多執行緒 執行緒同步
執行緒間的同步 常用的同步物件 1 臨界區 critical section 2 互斥 mutex 3 訊號量 semaphore 4 事件 event mfc提供了幾種同步類和同步輔助類,包含在afxmt.h中 1 同步物件基類 csyncobject 抽象類,為win32中的同步物件提供通用效能...
MFC多執行緒同步方法
mfc提供了多種同步物件,下面我們只介紹最常用的四種 a 使用 ccriticalsection 類 當多個執行緒訪問乙個獨占性共享資源時,可以使用 臨界區 物件。任一時刻只有乙個執行緒可以擁有臨界區物件,擁有臨界區的執行緒可以訪問被保護起來的資源或 段,其他希望進入臨界區的執行緒將被掛起等待,直到...
MFC多執行緒同步方法
mfc提供了多種同步物件,下面我們只介紹最常用的四種 a 使用 ccriticalsection 類 當多個執行緒訪問乙個獨占性共享資源時,可以使用 臨界區 物件。任一時刻只有乙個執行緒可以擁有臨界區物件,擁有臨界區的執行緒可以訪問被保護起來的資源或 段,其他希望進入臨界區的執行緒將被掛起等待,直到...