我需要編寫一個C++程序以高速率接收來自2個不同NIC的udp數據包 - 每個套接字大約45MB/s(同一臺計算機上每個網卡的單個套接字)。我開始創建一個基於事件的套接字(使用WSAEventSelect),但我想知道:這種類型的套接字模型(基於事件)可能意味着一些performane懲罰? (因爲事件將以高速率觸發,因此操作系統可能會導致一些延遲) 如果我選擇阻塞套接字,我會減少延遲嗎? 是否可以說在高吞吐量情況下,阻塞套接字可能會勝過非阻塞套接字?阻塞套接字性能與非阻塞套接字
注意:可伸縮性不是問題,因爲我們處理不超過兩個套接字。
感謝,
交流
完全正確,儘管我甚至傾向於說阻塞調用的延遲明顯較少,不僅「幾乎相同」,即使每個套接字只有一個單獨的阻塞線程(儘管線程可能會執行其他處理接收,所以一些額外的線程是沒有錯誤的)。當NIC以任何方式觸發中斷時,數據報進入接收緩衝區,並且使用阻塞API節省了排隊(和非排隊)APC和簿記OVERLAPPED結構的開銷。 – Damon