我正在開發管理一個套接字的客戶端應用程序。我正在使用IOCP來管理異步I/O。如何處理多個操作發佈在同一套接字上的情況
這是從網絡編程的書報價:
所有重疊操作都保證在應用程序發出的順序執行。但是,從完成端口返回的完成通知不保證以相同的順序。也就是說,如果應用程序發佈了兩個重疊的WSARecv操作,一個具有10 KB緩衝區,另一個具有12 KB緩衝區,則首先填充10 KB緩衝區,然後填充12 KB緩衝區。應用程序的工作線程可能會在10 KB操作的完成事件之前接收來自GetQueuedCompletionStatus的12 KB WSARecv通知。當然,這只是一個問題,當多個操作發佈在套接字上時。
那麼我應該如何處理這種情況呢?
+1,處理它的最簡單方法是不處理它!對於IOCP套接字類我有一個類似的方法,它使用它自己的緩衝區列表來發送以解決這個確切問題。隨着每個請求的完成,下一個請求將被傳送。所有線程安全的,當然;) – 2012-07-26 14:48:42