[Win32 Thread] WaitForMultipleObjects
WaitForMultipleObjects()
Win32 函式中的WaitForMultipleObjects() 允許你在同一時間等待一個上的物件。你必須將一個由 handles 組成的陣列交給此函式,並指定要等其中一個物件或是全部的物件。下面就是這個函式的原型:
DWORD WaitForMultipleObjects(
DWORD nCount,
CONST HANDLE *lpHandles,
BOOL bWaitAll,
DWORD dwMilliseconds
)參數
nCount表示 lpHandles 所指之 handles 陣列的元素個數。最大容量是 MAXIMUM_WAIT_OBJECTS 。
lpHandles指向一個由物件 handles 所組成的陣列 。這些handles 不需要是相同的型態。
DWaitAll如果此為 TRUE ,表示所有的 handles 都必須激發 ,此函式才得以回返。否則此函式將在任何一個handIle 激發時就回返。
dwMilliseconds當此時間長度終了 ,即使沒有任何 handles 激發,此函式地會回返。此值可為 0 ,以便測試。 亦可指定為INFINITE ,表示無窮等待。
回返值
WaitForMultipleObjects() 的回返值有些複雜。
1.如果因時間終了而回返,回返值是 WAIT_TIMEOUT ,類似WaitForSingleObject()。
2.如果 bWaitAll 是 TRUE ,那麼回返值將是 WAIT_OBJECT_O 。
3.如果 bWaitAll 是 FALSE ,那麼將回返值減去 WAIT_OBJECT_O ,就表 示陣列中的哪一個 handle 被激發了 。
4.如果你等待的物件中有任何 mutexes ,那麼回返值可能從WAIT _ABANDONED_O 到 WATT _ABANDONED _O+nCount-l 。
5.如果函式失敗 ,它會傳回 WAIT_FAILED 。這時候你可以使用 GetLastError() 找出失敗的原因 。
Comments
Post a Comment