WSAWaitForMultipleEvents

WSAWaitForMultipleEvents是一個函式的名稱。

簡介

WSAWaitForMultipleEvents函式
熟悉WSAEventSelect模型的朋友對這個函式肯定不會陌生,不對,其實大家都不應該陌生,這個函式與執行緒中常用的WaitForMultipleObjects函式有些地方還是比較像的,因為都是在等待某個事件的觸發嘛。
因為我們需要事件來通知我們重疊操作的完成,所以自然需要這個等待事件的函式與之配套。
DWORD WSAWaitForMultipleEvents(
DWORD cEvents, // 等候事件的總數量
const WSAEVENT* lphEvents, // 事件數組的指針
BOOL fWaitAll, // 這個要多說兩句:
// 如果設定為 TRUE,則事件數組中所有事件被傳信的時候函數才會返回
// FALSE則任何一個事件被傳信函式都要返回
// 我們這裡肯定是要設定為FALSE的
DWORD dwTimeout, // 逾時時間,如果逾時,函式會返回 WSA_WAIT_TIMEOUT
// 如果設定為0,函式會立即返回
// 如果設定為 WSA_INFINITE只有在某一個事件被傳信後才會返回
// 在這裡不建議設定為WSA_INFINITE,因為。。。後面再講吧..-_-b
BOOL fAlertable // 在完成例程中會用到這個參數,這裡我們先設定為FALSE
);

返回值:

WSA_WAIT_TIMEOUT :最常見的返回值,我們需要做的就是繼續Wait
WSA_WAIT_FAILED : 出現了錯誤,請檢查cEventslphEvents兩個參數是否有效
如果事件數組中有某一個事件被傳信了,函式會返回這個事件的索引值,但是這個索引值需要減去預定義值 WSA_WAIT_EVENT_0才是這個事件在事件數組中的位置。
具體的例子就先不在這裡舉了,後面還會講到

注意:

WSAWaitForMultipleEvents函式只能支持由WSA_MAXIMUM_WAIT_EVENTS對象定義的一個最大值,是 64,就是說WSAWaitForMultipleEvents只能等待64個事件,如果想同時等待多於64個事件,就要 創建額外的工作者執行緒,就不得不去管理一個執行緒池,

相關詞條

相關搜尋

熱門詞條

聯絡我們