Windows socket 5种I/O模型的比较
来源:互联网 发布:欧盟个人数据保护指令 编辑:程序博客网 时间:2024/05/22 15:31
从以下几个方面来进行比较:
*有无每线程64连接数限制
如 果在选择模型中没有重新定义FD_SETSIZE宏,则每个fd_set默认可以装下64个SOCKET。同样的,受 MAXIMUM_WAIT_OBJECTS宏的影响,事件选择、用事件通知实现的重叠I/O都有每线程最大64连接数限制。如果连接数成千上万,则必须对 客户端套接字进行分组,这样,势必增加程序的复杂度。
相反,异步选择、用完成例程实现的重叠I/O和完成端口不受此限制。
*线程数
除了异步选择以外,其他模型至少需要2个线程。一个主线程和一个辅助线程。同样的,如果连接数大于64,则选择模型、事件选择和用事件通知实现的重叠I/O的线程数还要增加。
*实现的复杂度
我的个人看法是,在实现难度上,异步选择<选择<用完成例程实现的重叠I/O<事件选择<完成端口<用事件通知实现的重叠I/O
*性能
由 于选择模型中每次都要重设读集,在select函数返回后还要针对所有套接字进行逐一测试,我的感觉是效率比较差;完成端口和用完成例程实现的重叠I/O 基本上不涉及全局数据,效率应该是最高的,而且在多处理器情形下完成端口还要高一些;事件选择和用事件通知实现的重叠I/O在实现机制上都是采用 WSAWaitForMultipleEvents,感觉效率差不多;至于异步选择,不好比较。所以我的结论是:选择<用事件通知实现的重叠 I/O<事件选择<用完成例程实现的重叠I/O<完成端口
- Windows socket 5种I/O模型的比较
- Socket I/O模型 - 幽默 讲解Windows支持的6种 Socket I/O Model
- windows下五种I/O模型的比较
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- Windows Socket五种I/O模型
- ajax开发框架和XMLhttpRequest、responseText、responseXml和JSON的应用
- 策略设计模式--学习笔记
- linux sendmail 总结
- String的优缺点
- StringBuffer和String的优缺点比较
- Windows socket 5种I/O模型的比较
- 手动删除数据库文件
- ORACLE中处理空值NULL的几个通用函数
- html5
- java web知识整理,对比。
- MFC动态创建(dynamic creation)实现原理
- 为什么构造函数不能为虚函数
- linux 5 安装 oracle10g
- 复制文件--c