我正在尝试学习如何将 epoll() 用于 tcp 服务器应用程序,因为我需要很多连接。 我尝试检查样本和教程,他们总是建议使用/设置在 epoll() 中添加的套接字为非阻塞套接字。为什么?
最佳答案
对于级别触发的 epoll,非阻塞套接字可以帮助最小化 epoll_wait() 调用,这是一个优化问题。
对于边缘触发的 epoll,您必须使用非阻塞套接字并调用 read() 或 write() 直到它们返回 EWOULDBLOCK。否则,您可能会错过内核通知。
您可以在这里找到详细的答案:https://eklitzke.org/blocking-io-nonblocking-io-and-epoll
关于c++ - 为什么在 epoll 中推荐 NON-BLOCKING sockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26269448/