b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

异步io 编程 《Windows核心编程》之“完成端口”(对所有IO都是如此(3)

电脑杂谈  发布时间:2018-02-09 04:47:04  来源:网络整理

被IO完成端口选中并分派了一项IO完成通知的线程。

5)已暂停线程列表

已释放的线程调用了一个函数将自己挂起。也就是说“4)”中某个线程接到了完成通知,并进行了收尾工作,在这个收尾工作中,调用了诸如Sleep函数,将自己挂起了。

从以上的描述可知,IO完成端口维护了多项线程相关的信息,并协调线程共同高效地完成“并发IO请求”。换句话说,IO完成端口是线程通信的调度者。异步io 编程

3,完成通知(Completion Notification)

完成通知与IO请求是相对的。IO请求包含的是发送的信息(OVERLAPPED + buffer),完成通知包含的是返回信息。完成通知具体包含的信息有4项:

1)已传输字节数;

2)完成键值;

3)OVERLAPPED指针;

4)错误码;

三、流程

介绍完了IO完成端口的背景知识和基本原理后,下面开始介绍怎么使用IO完成端口。本文按照Jeffrey的思路来介绍IO完成端口的使用流程,另外还有其他使用流程,可以参考我的博客:EchoAPP和Socket编程之IO完成端口,都配了流程图,它们的使用相对复杂一点。

Jeffrey为了方便使用,将IO完成端口封装为一个类—— class CIOCP ,它将创建完成端口和绑定设备分为两个步骤,见FileCopy.exe示例。我总结其流程大致如下:

注:

1)新开工作线程的数量一般设计为CPU数量的2倍。可以通过Windows API,“GetSystemInfo”来获取CPU信息,参考《Windows核心编程》第14章的“SysInfo.exe”示例。

2)程中开启循环,不让线程函数直接返回,这样可以避免反“复创建和销毁线程”。

四、示例

参考我的博客:EchoAPP和Socket编程之IO完成端口,前者相对要简单一点,是普通设备IO,后者是Socket编程。

五,知识图片

我用一张思维导出总结了《Windows核心编程》关于完成端口的知识点,如下:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-68209-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...