c/c++语言开发共享何时使用poll C函数的POLLOUT事件?

我用socket() + POLLIN poll() + recv() + send()编写了一个小型TCP服务器,但我不知道何时使用POLLOUT轮询或选择writefds来轮询可写事件。

谁能给我一个POLLOUT真正用法的例子

    通常的模式是使用poll()的非阻塞文件描述符,如下所示:

    从nginx源码,我发现:

    如果有一些数据要发送出来,nginx会尝试使用系统调用(也许是writev)发送它。 但是,如果nginx不能一次发送总数据,它将在pollfd上设置POLLOUT,如果使用poll事件,则等待可写事件。 获取可写事件时,nginx将发送左侧数据。

    当nginx尝试响应大型静态文件时,很容易重现这种情况

    使用带有gcc的c ++ 98,使用Raspberry PI 3,Debian。 。 。

    在Acceptor / Connector模式和Reactor / Proactor / ACT模式的实现中,我按照以下顺序定期使用POLLOUT:

    在大多数情况下,connect返回-1。 由于非阻塞文件描述符,这很可能。 然后我检查结果代码。

    如果它是EINPROGRESS,我在反应堆(使用ppoll或epoll)和POLLOUT中注册一个事件处理程序。 最终完成连接后,poll将返回POLLOUT设置。

    然后我创建一个新的TcpConnection类并进行通信。

    需要了解更多c/c++开发分享何时使用poll C函数的POLLOUT事件?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享何时使用poll C函数的POLLOUT事件?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980240.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐