Chinaunix首页 | 论坛 | 博客
  • 博客访问: 459668
  • 博文数量: 62
  • 博客积分: 1312
  • 博客等级: 中尉
  • 技术积分: 1555
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 18:10
文章分类

全部博文(62)

文章存档

2014年(1)

2013年(5)

2012年(56)

分类: C/C++

2012-03-15 11:26:17


 

点击(此处)折叠或打开

  1.   OVERLAPPED结构类型声明如下:
  2.   typedef struct _OVERLAPPED {
  3.   ULONG_PTR Internal; //操作系统保留,指出一个和系统相关的状态
  4.   ULONG_PTR InternalHigh; //指出发送或接收的数据长度
  5.   union {
  6.   struct {
  7.   DWORD Offset; //文件传送的开始位置
  8.   DWORD OffsetHigh; //文件传送的字节偏移量的高位字
  9.   };
  10.   PVOID Pointer; //指针,指向文件传送位置
  11.   };
  12.   HANDLE hEvent; //指定一个I/O操作完成后触发的事件
  13.   } OVERLAPPED, *LPOVERLAPPED;

  I/O设备处理必然让主程序停下来干等I/O的完成,解决这个问题,可以使用OVERLAPPED。

  OVERLAPPED I/O是WIN32的一项技术, 你可以要求操作系统为你传送数据,并且在传送完毕时通知你。这项技术使你的程序在I/O进行过程中仍然能够继续处理事务。事实上,操作系统内部正是以线程来I/O完成OVERLAPPED I/O。你可以获得线程的所有利益,而不需付出什么痛苦的代价。也就是说,OVERLAPPED主要是设置异步I/O操作,异步I/O操作是指应用程序可以在后台读或者写数据,而在前台做其他事情。

  Allen denver在他的《Serial Communication in Win32》中是这样解释OVERLAPPED I/O的:我个人认为还是比较准确的

  Overlapped I/O is not as straightforward as nonoverlapped I/O, but allows more flexibility and efficiency. A port open for overlapped operations allows multiple threads to do I/O operations at the same time and perform other work while the operations are pending. Furthermore, the behavior of overlapped operations allows a single thread to issue many different requests and do work in the background while the operations are pending.

本文转自: 

阅读(767) | 评论(0) | 转发(0) |
0

上一篇:C# 托盘程序设计

下一篇:最近的工作情况

给主人留下些什么吧!~~