本文我们来实现回射服务器的Buffer。 Buffer的实现 上节提到了非阻塞IO必须具备Buffer。再次将Buffer的设计描述一下: 这里必须补充一点,writeIndex指向空闲空间的第一个位置。 这里有三个重要的不变式: 1. 0 #define BUFFER_SIZE 1024 type...
分类:
系统相关 时间:
2014-10-24 16:24:21
阅读次数:
340
非阻塞IO是相对于传统的阻塞IO而言的。 我们首先需要搞清楚,什么是阻塞IO。APUE指出,系统调用分为两类,低速系统调用和其他,其中低速系统调用是可能会使进程永远阻塞的一类系统调用。但是与磁盘IO有关的系统调用是个例外。 我们以read和write为例,read函数读取stdin,如果是阻塞IO,...
分类:
系统相关 时间:
2014-10-23 12:11:41
阅读次数:
259
Java目前有三种IO相关的API了,下面简单的说一下:BIO,阻塞IO,最常用的Java IO API,提供一般的流的读写功能。相信学习Java的人,都用过。NIO,非阻塞IO,在JDK1.4中开始出现,大量应用与服务器端编程,用于提高并发访问的性能,常用的NIO框架有Netty,Mina。AIO...
分类:
编程语言 时间:
2014-10-11 20:28:27
阅读次数:
368
原文链接http://www.wangafu.net/~nickm/libevent-book/Ref0_meta.htmlLibevent使用手册:前瞻总览:Libevent是一个用来写高性能跨平台非阻塞IO程序的库.它的设计目标如下:跨平台 一个使用Libevent的程序应当能够运行于libe....
分类:
其他好文 时间:
2014-10-04 12:42:16
阅读次数:
196
原文链接:http://blog.csdn.net/colzer/article/details/8169075IO概念Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个f...
分类:
系统相关 时间:
2014-08-29 10:36:17
阅读次数:
346
NIO 设计背后的基石:反应器模式,用于事件多路分离和分派的体系结构模式。 反应器(Reactor):用于事件多路分离和分派的体系结构模式 通常的,对一个文件描述符指定的文件或设备, 有两种工作方式:?阻塞?与非阻...
分类:
编程语言 时间:
2014-08-28 22:50:56
阅读次数:
331
一、概述 ? ? ? ? ? acl 库的 C 库(lib_acl) 的 aio 模块设计了完整的非阻塞异步 IO 通信过程,在 acl 的C++库(lib_acl_cpp) 中封装并增强了异步通信的功能,本文主要描述了 acl C++ 库之非阻塞IO库的设计及...
分类:
其他好文 时间:
2014-08-25 21:20:25
阅读次数:
438
最近在学习IO模型,就突然想到了epoll属于哪个IO模型这个问题。要研究这个问题,我们首先要知道有哪些常用的IO模型。
常见的IO模型如下:
阻塞IO:程序阻塞直到IO可用。最简单的IO模型,你平时调用的recvfrom接收函数就属于这个模型。
非阻塞IO:程序调用IO函数后立刻返回,无论当前IO可用不可用。如果你把套接字设置成了非阻塞模式,那么你使用的就是这个模型了。
复用IO:程序阻...
分类:
其他好文 时间:
2014-08-16 16:33:00
阅读次数:
201
我们来考虑一个情形,你跟千千万万个玩家是魔兽世界的超级粉丝,每周末准时组团打boss。每当周末游戏服务器就亚历山大,因为起码几十万用户同时在线。如果用我们的多线程阻塞服务器作为游戏服务器是否可行呢?先分析游戏服务器有哪些特点:
① 网络游戏并非像网页一样,打开一旦下载完就可以关闭连接结束。网游必须是有一个持久有状态的连接,每一个客户端都需要跟服务器存在一个持久的连接,以便快速及时发送消息。而随...
分类:
其他好文 时间:
2014-08-15 23:52:39
阅读次数:
518
阻塞和非阻塞IO
阻塞IO指当进行IO操作时, 如果IO操作无法立即完成,当前线程进入阻塞状态,直到IO操作完成,IO函数返回。
非阻塞IO指当进行IO操作时,如果IO操作无法立即完成,IO函数立即返回,线程不会阻塞。
写与读操作对阻塞与非阻塞IO的语义
写操作,只有完成所有指定数据的写入时,写操作才算完成。
读操作,只要能读取到数据,读操作就算完成。...
分类:
其他好文 时间:
2014-06-11 07:12:32
阅读次数:
316