Windows支持的各种Socket 异步 I/O模型以及各自的特点

本文详细介绍了五种常见的网络I/O模型:select模型、WSAAsyncSelect模型、WSAEventSelect模型、OverlappedI/O模型及IOCP模型。每种模型都附带了其优缺点分析,便于读者理解不同场景下各模型的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select模型

WSAAsyncSelect模型

WSAEventSelect模型

OverlappedI/O 模型

IOCP模型

 

select模型是相对阻塞模式的一种解决方案

之所以称select模型,是因为工作原理是利用select函数实现对I/O的管理。目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据,被迫进入阻塞状态。

优点:模型十分简单,容易理解,过程清晰,从某种程度上避免了多线程。

缺点:实用价值不大,为了达到实时需要使用轮询来支持实时通信。

 

WSAAsyncSelect是基于消息机制的

优点:可在系统开销不大的情况下同时处理许多连接。

缺点:必须要有窗口的支持,用于处理消息。另外,如果处理成千上万套接字的所有事件,性能比较差。

 

WSAEventSelect 基于事件

优点:概念简单,不需要窗口环境。

缺点:每次只能等待64个事件,这就是说在处理多余64个的SOCKET时必须组织一个线程池。如需处理大量的SOCKET连接,此模型的伸缩性就不如重叠模型。

 

Overlapped I/O 模型

优点:可以运行在支持Winsock2的所有Windows平台 ,而不像完成端口只是支持NT系统。比起阻塞、selectWSAAsyncSelect以及WSAEventSelect等模型,重叠I/O (Overlapped I/O)模型使应用程序能达到更佳的系统性能。

 

IOCP模型

优点:管理海量连接时的处理效率,通过操作系统内核的相关机制完成IO处理的高效率。创建的线程数不是无限多,理想条件下最好减少线程的切换,同时又能像线程池一样,重复利用。

缺点:只支持NT系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值