五种WinSock I/O模型的特点及比较

原创 2012年03月23日 09:54:16
======  select 模型:
         
        select模型是WinSock中应用最广泛的模型之一,核心就是select函数,它可用于
    判断套接字上是否存在数据,或者能否向一个套接字写入数据。
        这个函数可以有效地防止应用程序在套接字处于阻塞模式中时,send或recv进入
    阻塞状态;同时也可以防止产生大量的WSAEWOULDBLOCK错误
         select的优势是能够从当个线程的多个套接字上进行多重连接及I/O。
    这就避免了伴随阻塞套接字和多重连接的线程剧增

======  WSAAsyncSelect 模型:

        这个是我个人最喜欢的一个模型^_^  因为它也是以消息为基础的。
        关键就是WSAAsyncSelect函数,将socket消息发送到hWnd窗口上,然后在那里
    处理相应的FD_READ,FD_WRITE等等消息
    优点:
        WSAAsyncSelect和WSAEventSelect模型提供了读写数据能力的异步通知,但他们不
    提供异步数据传送,而重叠及完成大unkou提供异步数据的传送。
        而且它可以在系统开销不大的情况下同时处理很多连接,而select模型还需要建立
    fd_set结构。
        缺点:
        必须要使用一个窗口接收消息-_-b
        如果处理成千上万的套接字就力不从心了

======  WSAEventSelect 模型
        这个也是以时间为基础的网络事件通知,但是与WSAAsyncSelect不同的是,
    它主要是由事件对象句柄完成的,而不是通过窗口。
        这个就有点复杂了,一句半句说不清...-_-b
        优点:
          不需要窗口
        缺点:
          每次只能等待64个事件,所以处理多个套接字时有必要组织一个线程池;
          所以伸缩性就不如后面的完成端口了

======  重叠模型
        这个模型可以使程序能达到更加的系统性能。基本设计原理就是让应用程序
     使用重叠的数据结构,一次投递一个或多个I/O请求。针对这些提交的请求,
     在他们完成之后,应用程序可为他们提供服务。
        它又分为两种实现方法:在事件中使用,还有就是完成例程,每样都不是很好学-_-b

======  完成端口
        这个是所有里面最为复杂的I/O模型,楼主最好是在理解了重叠I/O的基础之
    上再来学习。
        完成端口提供了最好的伸缩性,往往可以使系统达到最好的性能,是处理
    成千上万的套接字的首选。
        从本质上说,完成端口模型要求创建一个windows完成端口对象,该对象通
   过指定数量的线程,对重叠I/O请求进行管理,以便为已经完成的重叠I/O请求提供服务。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

五种WinSock I/O模型的特点及比较

====== select 模型: select模型是WinSock中应用最广泛的模型之一,核心就是select函数,它可用于 判断套接字上是否存在数据,或者能否向一个套接字写入数据。 这...

WinSock的五种I/O模型

1、 两种I/O模式  阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。  非阻塞模式:执行I/O操作时,Winsock函数...

WinSock五种I/O模型的性能分析

原文地址:http://club.topsage.com/thread-735498-1-1.html 五种I/O模型的性能分析 重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提...

Winsock五种的I/O模型

Winsock五种的I/O模型上(转)2009-03-03 21:02Winsock 的I/O操作:1、 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字...

Winsock五种I/O模型的性能分析

五种I/O模型的性能分析重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提供了一些特有的扩展函数。当使用重叠I/O模型时,可以选择使用不同的完成通知方式。采用事件对象通知的重叠I/O模型是不可...

Winsock的五种套接字I/O模型之select

http://zixiaoruixue731.blog.163.com/blog/static/336606020085253855750/ Winsock提供了两种套接字模式:锁定和非锁定.当...

WinSock五种I/O模型的性能分析

五种I/O模型的性能分析重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提供了一些特有的扩展函数。当使用重叠I/O模型时,可以选择使用不同的完成通知方式。采用事件对象通知的重叠I/O模型是不可...

五种I/O模型的比较

我会从以下几个方面来进行比较 *有无每线程64连接数限制 如 果在选择模型中没有重新定义FD_SETSIZE宏,则每个fd_set默认可以装下64个SOCKET。同样的,受 MAXIMUM_WAI...

WinSock重叠I/O模型

一.重叠I/O模型的概念当调用ReadFile()和WriteFile()时,如果最后一个参数lpOverlapped设置为NULL,那么线程就阻塞在这里,直到读写完指定的数据后,它们才返回。这样在读...

WinSock完成端口I/O模型

关于重叠I/O,参考《WinSock重叠I/O模型》;关于完成端口的概念及内部机制,参考译文《深度探索I/O完成端口》。 完成端口对象取代了WSAAsyncSelect中的消息驱动和WSAEvent...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)