Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个非阻塞套接字列表。
我可以调用recv每一个(在这种情况下,一些调用会失败)或poll列表,然后调用recv准备好的套接字。
recv
poll
这些方法之间是否存在性能差异?
谢谢!
除非套接字上的数据速率非常高(例如:recv()失败率 <25%),否则使用poll()orselect()几乎总是更好的选择。
recv()
poll()
select()
现代操作系统将智能阻塞一个poll()操作,直到集合中的一个 fd 准备好(内核将阻塞一组 fd 上的线程,仅当该 fd 被访问时才唤醒它......最终,这种情况远远超过了必要的,导致一些忙等待,但总比没有好),而recv()循环总是会导致忙等待。