目前网络服务器的瓶颈是IO效率, 有效的解决此瓶颈可以在线或并发人数大的问题。其中,IOCP(windows)和EPOLL(Linux)是基于IO编程的API。
IOCP
全称I/O Completion Port,中文译为I/O完成端口。IOCP是一个异步I/O的API,它可以高效地将I/O事件通知给应用程序。与使用select()或是其它异步方法不同的是,一个套接字[socket]与一个完成端口关联了起来,然后就可继续进行正常的Winsock操作了。然而,当一个事件发生的时候,此完成端口就将被操作系统加入一个队列中。然后应用程序可以对核心层进行查询以得到此完成端口。
EPOLL
传统的select及poll的效率会因为在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器能支持的人数有了个比较明显的限制。自从Linux提供了/dev/epoll的设备及后来2.6内核中对/dev/epoll设备的访问的封装(System Epoll)之后,这种现象得到了大大的缓解。
epoll的操作很简单,总共不过4个API:epoll_create, epoll_ctl, epoll_wait和close。
如果对想了解进一步epoll,可以参考关于网络游戏的网络编程等相关的文章。
分享到:
相关推荐
iocp-epoll的几个例子,提供参考。 其中,iocp包含了几种使用方式,同步异步处理方式, epoll为linux下面使用,编译时可以使用下面简单命令, g++ -p -g -o hhh ***.cpp -l pthread
关于epoll iocp select等网络模型运行实例代码
linux下的epoll模拟IOCP异步的demo,希望对学习epoll的朋友有所帮助。
Windows完成端口与Linux epoll技术简介
Windows完成端口与Linux+epoll技术简介
iocp与epoll一样强悍。 代码经过测试,没有问题。放心下载吧,朋友们!很值得
利用epoll结合线程池封装的类IOCP网络接口
使用libevent库设置httpserver所使用的系统特征值(select、epoll、iocp等)
win:IOCP linux:EOPLL 性能比较 report 相同的硬件环境下,分别对10,20,50,500个链接做了性能测试。
百万并发量服务器设计方案:包含iocp,epoll等网络高级开发,以及内存池技术的设计等案例
- ***Server*** 基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。 - ***Agent*** Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。...
大并发服务器编程模型 windows iocp完成端口模型可支持1万大并发,但是linux能作到5万大并发
为您提供HP-Socket通信框架下载,HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端...特点:Server基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通
服务器基于IOCP / EPOLL通信模型,结合内存池,私有堆等技术,实现了高效的内存管理,以支持大规模和高并发通信场景。 代理代理组件本质上是一个多客户端组件,它使用与服务器组件相同的技术体系结构。 Agent组件...
支持http,epoll,iocp等。 ## 特性 - 针对不同平台使用不同的IO模型: - IOCP > Windows - KQUEUE > FreeBSD(MacOSX, iOS...) - EPOLL > Linux(Linux, Android...) - 支持极高的并发 - Windows > 能跑...
基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。 Agent Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时...
2 增加wsa网络IO模型(Windows socket异步IO模型) 该模型支持WEB服务器 反向代理服务器和SSL安全连接 与Linux下的epoll具有同等的功能和效率 3 增加Windows和Linux平台下的多线程支持(Unix下尚未实现) 多线程...
2 增加wsa网络IO模型(Windows socket异步IO模型) 该模型支持WEB服务器 反向代理服务器和SSL安全连接 与Linux下的epoll具有同等的功能和效率 3 增加Windows和Linux平台下的多线程支持(Unix下尚未实现) 多线程...
异步io事件分发,接口能够...案例中目前仅仅提供了epoll模型(支持多线程)后将添加iocp模型。 用户仅仅需要实现自己的事件分发类接口以及netio接口 当然业务层的东西还是需要用户自己去做,但是基本框架不用做任何改动了