RIO這裏代表Windows8'註冊I/O'網絡擴展。通過查看示例代碼,似乎無論您是將RIONotify與事件還是IO完成端口一起使用,您基本上最終都會編寫相同的循環,並且具有幾乎相同的性能特徵。循環體:IOCP的RIO與事件有關嗎?
RIONotify() [event or IOCP]
Wait [on the event, or using GetQueuedCompletionStatus()]
RIODequeueCompletion()
// Process the dequeued events
基本上好像IO完成端口的使用情況提供了「事件」通知/等待沒有額外的功能,因爲消息的實際隊列與RIODequeueCompletion完成。所以使用事件或IOCP無關緊要。我的問題是,我忽略了模型之間的任何有趣或重要的區別?
謝謝!我讀過你的文章,並且讚賞這個額外的解釋。但原則上,仍然可以通過手動分配在一些工作線程中調用RIODequeue完成的工作來手動擴展多個接收線程*,而無需手動IOCP。 IOCP更關心如何比表現性更方便嗎? –
你可以手動做,但爲什麼要麻煩? IOCP將更加高效和明顯。其他任何事情都可能需要你「提前」喚醒線程來輪詢完成。 –