【问题标题】:why is NON-BLOCKING sockets recommended in epoll为什么在 epoll 中推荐使用 NON-BLOCKING 套接字
【发布时间】:2014-12-03 20:29:53
【问题描述】:

我正在尝试学习如何将 epoll() 用于 tcp 服务器应用程序,因为我期待许多连接。 我尝试检查示例和教程,他们总是建议使用/设置在 epoll() 中添加的套接字为非阻塞套接字。为什么?

【问题讨论】:

标签: c++ linux sockets epoll tcpserver


【解决方案1】:

对于级别触发的 epoll,非阻塞套接字可以帮助最小化 epoll_wait() 调用,这是一个优化问题。

对于边缘触发的 epoll,您必须使用非阻塞套接字并调用 read() 或 write() 直到它们返回 EWOULDBLOCK。否则,您可能会错过内核通知。

您可以在这里找到详细答案:https://eklitzke.org/blocking-io-nonblocking-io-and-epoll

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 2016-03-01
    • 2016-12-15
    • 2019-11-13
    • 2010-11-18
    • 1970-01-01
    • 2012-04-01
    • 2011-03-05
    相关资源
    最近更新 更多