我見過幾篇比較select()
與poll()
或epoll()
的文章,我見過很多指南討論了帶有多個套接字的select()
的實際用法。socket select()vs non-block recv
但是,我似乎無法找到的是與沒有select()
的非阻塞recv()
調用的比較。如果只有1個套接字讀取和1個套接字寫入,是否有任何理由使用select()
調用?當沒有可用的數據時,recv()
方法可以設置爲不阻止並返回錯誤(WSAEWOULDBLOCK
),那麼當您沒有其他套接字進行檢查時,爲什麼還要打電話給select()
?非阻塞recv()
調用速度更慢嗎?
這可能是您實施的所有細節。你試過了嗎? –
當沒有數據需要連續閱讀時,你會怎麼做?永遠循環?或者使用select或poll或epoll?無論阻塞還是非阻塞,您都需要以某種方式等待數據。 – goji
是的,正如@Troy所說的,這樣你就可以實現主動等待 - 這意味着沒有什麼可讀的時候,處理器沒有任何憐憫。 – zoska