写完,调完,IO 完成端口模型

来源:互联网 发布:java调用微信支付接口 编辑:程序博客网 时间:2024/06/08 03:43

io完成端口,Io Completion Port,称为接口更合适,号称是windows平台上处理IO最快的模型,windows内部也是这样处理的。

IO传输一般来说有阻塞、非阻塞、多线程阻塞、完成端口等多种模型,多线程阻塞是linux中常用的,windows中常用非阻塞即消息制,但是都有开销大,处理高吞吐的时候心有余而力不足的缺点。

一般来说,一台机同时连接2000以上就要用到完成端口了,这是号称windows上系统级处理能力最快的模型了。

原理比较简单就是把多线程阻塞型稍加改变,本来是遇到连接就起线程,而现在先起一定数量的线程,再遇到连接的时候,线程可以直接处理,而无须干预。至少可以比多线程阻塞快一点。

写起来倒也不复杂,用一个主线程先生成一定数量的线程,然后让它们等着,主线程阻塞接受连接,然后绑定一下完成端口,原先的线程就自动开始处理了。在处理数据时使用Overlapped重叠模式,则可以提高性能。

代码可以参见我的项目:www.kicoy.com。

有关完成端口的资料:http://blog.csdn.net/sodme/category/13790.aspx

http://www.allife.org/index.php?job=art&articleid=a_20051227_140933

高性能网络论坛:http://groups.google.com/group/dev4server?lnk=li

原创粉丝点击