MFC 執行緒同步

2021-10-24 10:16:30 字數 1248 閱讀 3645

使用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 類 當多個執行緒訪問乙個獨占性共享資源時,可以使用 臨界區 物件。任一時刻只有乙個執行緒可以擁有臨界區物件,擁有臨界區的執行緒可以訪問被保護起來的資源或 段,其他希望進入臨界區的執行緒將被掛起等待,直到...