重叠IO学习心得

转载 2006年05月17日 15:06:00
   想系统了解一下windows下面的几种IO模式,现在从重叠IO开始。

 

   先说事件通知的重叠IO,时间通知的重叠IO的好处就是写程序的时候可以先一股脑投递n个IO的请求,然后将每个OVERLAPPED结构与一个event对象相关联,再交给操作系统让它自己慢慢处理去。然后投递完所有的请求之后等待WaitForMultipleObjects返回(WaitForMultipleObjects返回了代表所有的IO操作都已经完成了),然后依次调用GetOverlappedResult来获得IO操作的信息(其实GetOverlappedResult也会等待IO操作完成,不过到这里已经完成了)。当然GetOverlappedResult之前在等待IO操作完成的时候程序还可以做些其他的事情。

 

   而重叠IO的另外一种模式就是异步过程调用,异步过程调用有点类似于创建线程函数createthread的做法,在读写操作的时候指定一个回调函数,读取完毕之后程序自动从回调函数入口点来执行(支持重叠IO的读写操作函数如readfile、WSARecv等都会有个参数指定回调函数入口点),这样把更多的操作放到重叠IO的处理函数中,主函数就可以腾出更多的时间干正事。

 

   不论是哪种模式,其实原理都是一样的,就是先把要读写的请求全部投递了,然后主程序可以一边做该做的事情一边来等待IO的完成,IO完成以后(WaitForMultipleObjects返回之后)再处理数据。

 

   套用一段《Win32多线程程序设计》里的话结尾:重叠IO可以让你要求操作系统为你传送数据,并且再传送完毕时通知你,它使你的程序在IO进行过程中仍然能够继续处理事务。事实上操作系统内部正是以线程来完成重叠IO。你可以获得线程的所有利益,而不需付出什么痛苦代价。

什么是重叠I/O

在windows中有一个api叫readfile bool readfile( handle hfile, // handle to file lpvoid lpbuffer, // data buf...
  • shejiannan
  • shejiannan
  • 2013年11月08日 11:22
  • 1345

WINDOWS重叠IO模型

一. 重叠IO模型简介 重叠IO的核心实际上就是一个重叠的数据结构。应用程序在单个套接字上投递一个或者多个IO操作,当IO操作完成时对应的重叠数据结构中的事件对象会受信,相应的应用程序通过查事件对象...
  • Mr_SGQ
  • Mr_SGQ
  • 2012年05月18日 16:17
  • 7404

重叠IO

转自 http://www.cnblogs.com/my_life/articles/1982091.html 一、 异步IO         说到重叠模型首先还是提一下异步IO比较好,因为从...
  • ilovezha
  • ilovezha
  • 2015年03月23日 16:29
  • 198

io重叠模式

在 Winsock 中,重叠 I/O(Overlapped I/O)模型能达到更佳的系统性能,高于select模型、异步选择和事件选择三种。重叠模型的基本设计原理便是让应用程序使 用一个重叠的数据结...
  • helloarm123456
  • helloarm123456
  • 2014年08月20日 17:07
  • 753

windows Socket编程之重叠IO模型

上一篇文章我们讲了EventSelect网络模型,它已经解决了等待数据到来的这一大部分时间,但是它还有一小部分时间没有节省下来。那就是把数据从网卡的缓冲区拷贝到我们应用程序的缓冲区里边。而这一篇的重叠...
  • Timmiy
  • Timmiy
  • 2016年08月14日 15:17
  • 2304

重叠IO-完成端口

Email:kruglinski_at_gmail_dot_com Blog:kruglinski.blogchina.com 早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有...
  • zanfeng
  • zanfeng
  • 2014年02月15日 01:55
  • 2972

基于事件的重叠IO模型

Windows socket重叠IO模型开发。        利用套接字重叠IO模型,应用程序能一次投递一个或多个IO请求,当系统完成IO操作后通知应用程序。该模型以win32异步IO机制为基...
  • rankun1
  • rankun1
  • 2015年12月19日 21:35
  • 1453

【整理】重叠IO模型的编程思路及C++源代码

编程步骤 1、创建一个套接字,开始在指定的端口上监听连接请求。 2、接收一个入站的连接请求。 3、为接受的套接字创建新的WSAOVERLAPPED结构,并分配事件对象句柄。 4、以WSAOVE...
  • brk1985
  • brk1985
  • 2014年01月24日 16:08
  • 616

重叠io操作

第一章 一. 重叠模型的优点 1. 可以运行在支持Winsock2的所有Windows平台 ,而不像完成端口只是支持NT系统。 2. 比起阻塞、select、WSAAsyncSelect以及WSAEv...
  • youngcs
  • youngcs
  • 2007年08月08日 09:18
  • 3190

你的“重叠IO”是真正异步的吗?

什么是同步IO?什么是异步IO? 在windows下,一个IO读操作可以分为两大步: 1、从IO设备读取数据,保存在系统的缓冲区; 2、从系统缓冲区拷贝到用户的缓冲区。 如果一个读操作的两个步...
  • lyclowlevel
  • lyclowlevel
  • 2011年09月21日 21:09
  • 2802
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:重叠IO学习心得
举报原因:
原因补充:

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