5
問題是WaitForMultipleObjects(Ex)只返回數組中所有被信號對象的最小索引。我想知道什麼事件對象(使用CreateEvent創建)處於有信號(或無信號)狀態。 我認爲這是不可能的,但決定要問只是爲了確保我沒有丟失任何東西=)如何檢查事件對象的狀態而不實際更改它?
問題是WaitForMultipleObjects(Ex)只返回數組中所有被信號對象的最小索引。我想知道什麼事件對象(使用CreateEvent創建)處於有信號(或無信號)狀態。 我認爲這是不可能的,但決定要問只是爲了確保我沒有丟失任何東西=)如何檢查事件對象的狀態而不實際更改它?
對於你想要測試的狀態的每個對象,調用WaitForSingleObject
超時爲零。如果它返回WAIT_OBJECT_0
,則該對象被髮信號通知。否則,它不是。
除非你有一個自動重置事件,否則等待一個對象變成信號不會改變它的狀態。
請記住,使用WaitForSingleObject
檢測到的狀態與WaitForMultipleObjects
返回時的狀態不一定相同。與此同時,更多的對象可能會變成信號,而其他對象可能已經變成無信號。
+1是的,似乎OP將不得不遍歷他們關心的每個對象,並且單獨檢查每個對象。 (另外,作爲參考,雖然OP在此特別詢問事件,但請注意,WaitForSingleObject *會更改互斥信號和信號量的信號狀態,因此,如果任何對象包含這些信息,請注意!) – BrendanMcK 2012-03-07 11:23:30