加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何缓冲非阻塞IO?

发布时间:2020-12-16 10:41:49 所属栏目:百科 来源:网络整理
导读:当我在阻塞文件描述符上需要缓冲IO时,我使用stdio.但是如果我根据手动将文件描述符转换为非阻塞模式,则stdio缓冲是不可用的.经过一些研究后,我发现BIO可用于缓冲非阻塞IO. 但可能还有其他选择吗? 我需要这样做以避免在多连接环境中使用线程. 解决方法 我认
当我在阻塞文件描述符上需要缓冲IO时,我使用stdio.但是如果我根据手动将文件描述符转换为非阻塞模式,则stdio缓冲是不可用的.经过一些研究后,我发现BIO可用于缓冲非阻塞IO.

但可能还有其他选择吗?

我需要这样做以避免在多连接环境中使用线程.

解决方法

我认为你所谈论的是 Reactor Pattern.这是一种非常标准的方式来处理大量没有线程的网络连接,并且在多人游戏服务器引擎中非常常见.另一个实现(在python中)是 twisted matrix.

基本算法是:

>为每个套接字都有一个缓冲区
>检查哪些套接字已准备好读取(select(),poll()或只是迭代)
>为每个插座:

>调用recv()并将内容累积到套接字缓冲区中,直到recv返回0或EWOULDBLOCK出错>使用缓冲区的内容调用套接字的应用程序级数据处理程序>清除套接字的缓冲区

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读