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

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系统。

你可能感兴趣的:(windows,socket,异步模型)