我需要一個客戶端網絡線程,以便能夠對要傳輸的新消息以及網絡上新數據的接收做出響應。我希望避免這個線程執行輪詢循環,而只是根據需要進行處理。如何讓Win32線程在工作隊列和套接字上等待?
的情況如下:
客戶端應用程序需要通過一個協議,該協議在很大程度上進行通信的服務器,但不是完全同步的。通常,客戶端向服務器發送消息並阻塞,直到收到響應。
服務器可能異步處理客戶端請求,在這種情況下,對客戶端的響應不是結果,而是處理已開始的通知。在服務器完成處理客戶端請求時,結果消息將在某個時間點發送給客戶端。
異步結果通知可以隨時到達客戶端。這些通知在收到時需要處理,即只有當客戶端再次發送時才能處理積壓。
客戶端網絡線程接收並處理來自服務器的通知,並從客戶端傳輸傳出消息。
爲了達到這個目的,我需要做一個線程喚醒來執行處理,無論是在接收到網絡數據還是當一個要發送的消息被排入輸入隊列時。
線程如何喚醒來執行處理入隊的工作項或來自套接字的數據?
我主要對使用普通的Win32 API感興趣。
一個簡單的例子或相關教程將非常歡迎!
+1;解決問題即使它不能很好地擴展(有時我會得到一個'IOCP是唯一的解決方案'的思路;而且通常實現解決方案要容易得多)。 – 2009-08-11 20:23:21