Win32函數中的WaitForMultipleObjects()允許你在同一時間等待一個以上的對象。你必須將一個由handles組成的數組交給此函數,並指定要等待其中一個對象或是全部的對象,下面就是這個函數的原型:
nCount : 表示lpHandles數組的元素個數。最大容量是MAXIMUM_WAIT_OBJECTS。
lpHandles:指向一個由對象handles所組成的數組。這些handles不需要爲相同的類型。
bWaitAll:如果此爲TRUE。表示所有的handles都必須激發,此函數才得以返回,否則此函數將在任何一個handle激發時就返回。
dwMilliseconds:當該時間長度終了時,即使沒有任何handles激發,此函數也會返回,此值可爲0,以便測試,亦可指定爲INFINITE,表示無窮等待。
返回值:
WaitForMultipleObjects()的返回值有些複雜。
1)如果因時間終了而返回,則返回值是WAIT_TIMEOUT,類似WaitForSingleObject()。
2)如果bWait是TRUE,那麼返回值將是WAIT_OBJECT_0。
3)如果bWait是FALSE,那麼將返回值減去WAIT_OBJECT_0,就表示數組中的哪一個handle被激發了。
4)如果你等待的對象中有任何mutexes,那麼返回值可能從WAIT_ABANDONED_0到WAIT_ABANDONED_0+nCount - 1。
5)如果函數失敗,它會傳回WAIT_FAILED,這時候你可以使用GetLastError()找出失敗的原因。
注意,handles數組中的元素個數有上限,絕對不能夠超過MAXIMUM_WAIT_OBJECTS。