当前位置:  开发笔记 > 编程语言 > 正文

如何缓冲非阻塞IO?

如何解决《如何缓冲非阻塞IO?》经验,为你挑选了1个好方法。

当我在阻塞文件描述符上需要缓冲IO时,我使用stdio.但是如果我根据手动将文件描述符转换为非阻塞模式,则stdio缓冲是不可用的.经过一些研究后,我发现BIO可用于缓冲非阻塞IO.

但可能还有其他选择吗?

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



1> sean riley..:

我想你所说的是Reactor Pattern.这是一种非线性处理大量网络连接的标准方法,在多人游戏服务器引擎中非常常见.另一个实现(在python中)是扭曲矩阵.

基本算法是:

为每个套接字都有一个缓冲区

检查哪些套接字可以读取(select(),poll()或只是迭代)

对于每个套接字:

调用recv()并将内容累积到套接字的缓冲区中,直到recv返回0或EWOULDBLOCK出错

使用缓冲区的内容调用套接字的应用程序级数据处理程序

清除套接字的缓冲区

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有