关于网络编程六种IO模型的形象比喻

网摘录以下比喻,实在生动贴切.....数据结构

////////////////////////////////////////////////////////////////////////////////////////app

select模型 
WSAAsyncSelect模型 
WSAEventSelect模型 
Overlapped I/O 事件通知模型 
Overlapped I/O 完成例程模型 
IOCP模型socket

//////////////////////////////////////////////////////////////////////////////////////////spa

    老陈有一个在外地工做的女儿,不能常常回来,老陈和她经过信件联系。他们的信会被邮递员投递到他们的信箱里,这和Socket模型很是相似。orm

//////////////////////////////////////////////////////////////////////////////////////////事件

select模型 
        老陈很是想看到女儿的信。以致于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~~~ 
在这种状况下,“下楼检查信箱”而后回到楼上耽误了老陈太多的时间,以致于老陈没法作其余工做。 
select模型和老陈的这种状况很是类似:周而复始地去检查......若是有数据......接收/发送.......开发

//////////////////////////////////////////////////////////////////////////////////////////it

WSAAsyncSelect模型 
        后来,老陈使用了微软公司的新式信箱。这种信箱很是先进,一旦信箱里有新的信件,盖茨就会给老陈打电话:喂,大爷,你有新的信件了!今后,老陈不再必频繁上下楼检查信箱了,牙也不疼了,你瞅准了,蓝天......不是,微软~~~~~~~~ 
微软提供的WSAAsyncSelect模型就是这个意思。select

//////////////////////////////////////////////////////////////////////////////////////////请求

WSAEventSelect模型 
        后来,微软的信箱很是畅销,购买微软信箱的人以百万计数......以致于盖茨天天24小时给客户打电话,累得腰酸背痛,喝蚁力神都很差使~~~~~~ 
微软改进了他们的信箱:在客户的家中添加一个附加装置,这个装置会监视客户的信箱,每当新的信件来临,此装置会发出“新信件到达”声,提醒老陈去收信。盖茨终于能够睡觉了。

 //////////////////////////////////////////////////////////////////////////////////////////

Overlapped I/O 事件通知模型 
        后来,微软经过调查发现,老陈不喜欢上下楼收发信件,由于上下楼其实很浪费时间。因而微软再次改进他们的信箱。新式的信箱采用了更为先进的技术,只要用户告诉微软本身的家在几楼几号,新式信箱会把信件直接传送到用户的家中,而后告诉用户,你的信件已经放到你的家中了!老陈很高兴,由于他没必要再亲自收发信件了! 
        Overlapped I/O 事件通知模型和WSAEventSelect模型在实现上很是类似,主要区别在“Overlapped”,Overlapped模型是让应用程序使用重叠数据结构(WSAOVERLAPPED),一次投递一个或多个Winsock I/O请求。这些提交的请求完成后,应用程序会收到通知。什么意思呢?就是说,若是你想从socket上接收数据,只须要告诉系统,由系统为你接收数据,而你须要作的只是为系统提供一个缓冲区~~~~~

 //////////////////////////////////////////////////////////////////////////////////////////

 I/O 完成例程模型         老陈接收到新的信件后,通常的程序是:打开信封----掏出信纸----阅读信件----回复信件......为了进一步减轻用户负担,微软又开发了一种新的技术:用户只要告诉微软对信件的操做步骤,微软信箱将按照这些步骤去处理信件,再也不须要用户亲自拆信/阅读/回复了!老陈终于过上了小资生活!

相关文章
相关标签/搜索