第十章 同步设备I/O和异步设备I/O
2014-11-30 17:31
246 查看
一、目的
解决线程请求I/O设备和I/O设备响应线程的性能问题
二、打开设备
CreateFile 可以打开文件,目录,逻辑磁盘驱动器,物理磁盘驱动器,串口(通过电话线传输数据),并口(将数据传输至打印机)等
三、关闭设备
CloseHandle
四、与设备通信 (设备必须是以异步的方式进行工作的)
1、使用等待的方式 WaitForSingleObject 等待设备内核对象被触发
2、可提醒I/O 向线程APC队列,加入回调函数 (线程必须是可提醒状态,执行过*Ex的等待状态)
3、I/O完成端口 (利用并发模型)
五、I/O完成端口详解
1、如何使用
CreateIoCompletionPort 创建一个和设备绑定的完成端口
GetQueuedCompletionStatus 让一个线程等待I/O完成端口
PostQueuedCompletionStatus 将一个已完成的I/O通知追加到完成端口队列
2、原理
I/O完成端口维护一个I/O完成通知队列和一个等待通知的线程队列。
I/O设备完成一项任务后会把通知追加到完成端口的通知队列,
另一方面如果有线程在等待完成端口,则完成端口会唤醒队尾部的线程处理通知。
解决线程请求I/O设备和I/O设备响应线程的性能问题
二、打开设备
CreateFile 可以打开文件,目录,逻辑磁盘驱动器,物理磁盘驱动器,串口(通过电话线传输数据),并口(将数据传输至打印机)等
三、关闭设备
CloseHandle
四、与设备通信 (设备必须是以异步的方式进行工作的)
1、使用等待的方式 WaitForSingleObject 等待设备内核对象被触发
2、可提醒I/O 向线程APC队列,加入回调函数 (线程必须是可提醒状态,执行过*Ex的等待状态)
3、I/O完成端口 (利用并发模型)
五、I/O完成端口详解
1、如何使用
CreateIoCompletionPort 创建一个和设备绑定的完成端口
GetQueuedCompletionStatus 让一个线程等待I/O完成端口
PostQueuedCompletionStatus 将一个已完成的I/O通知追加到完成端口队列
2、原理
I/O完成端口维护一个I/O完成通知队列和一个等待通知的线程队列。
I/O设备完成一项任务后会把通知追加到完成端口的通知队列,
另一方面如果有线程在等待完成端口,则完成端口会唤醒队尾部的线程处理通知。
相关文章推荐
- 第十章:同步设备I/O与异步设备I/O(二)
- 第十章:同步设备I/O与异步设备I/O
- 第十章:同步设备IO与异步设备IO
- <<Windows核心编程(第五版)>>第十章同步设备I/O与异步设备I/O:10.5接收I/O请求完成通知
- 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
- 第10章 同步设备I/O和异步设备I/O(2)_同步IO和异步IO基础
- 串口同步和异步的读取与串口设备编程
- 《Windows核心编程系列》十谈谈同步设备IO与异步设备IO之异步IO
- 十、同步设备I/O与异步设备I/O(I/O完成端口)
- 《Windows核心编程 5th》部分读书笔记----第10章 同步设备I/O与异步设备I/O
- 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
- 同步设备IO与异步设备IO之异步IO介绍
- 同步和异步设备I/O
- 同步和异步设备I/O(Synchronous and asynchronous device IO)
- windows核心编程--同步设备I/O与异步设备I/O
- Windows核心编程:同步设备I/O与异步设备I/O
- Windows核心编程学习笔记(21)--同步设备I/O与异步设备I/O2
- 同步和异步设备I/O(Synchronous and asynchronous device IO
- 《Windows核心编程》学习笔记(10)– 同步设备I/O与异步设备I/O
- 【读书笔记】同步设备I/O与异步设备I/O