IO Complement Port(完成端口)
来源:互联网 发布:网络推广优化 编辑:程序博客网 时间:2024/06/05 03:58
参考:
1. http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 此文很详细地阐述了Overlapped IO, 并重点说明和实现完成端口范例。
2. 《Win32多线程程序设计》 侯捷译. 第六章Overlapped IO
部分摘录:
1.所谓 scalable 系统,是指藉着 RAM 或磁盘空间或 CPU 个数的增加而能够提升应用程序效能的一种系统。
2. 靠着“一大堆线程服务一大堆events”的性质, completion ports比较容易建立起 “scalable” 服务器。
i I/O completion ports 允许一个线程将一个请求暂时保存下来,而由另一个线程为它做实际服务。
i I/O completion ports 默默支持 scalable 架构。
5.大略可以这样描述一个 com pletion port:它是一个机制,用来管理一堆线程如何为completed overlapped I/O requests服务。然而,completion port远比一个简单的分派器丰富得多, I/O completion port 也像一个活门(阀)一样,保持一个CPU或多个 CPUs 尽可能地忙碌,但也避免它们被太多的线程淹没。I/O com pletion port 企图保持并行处理的线程个数在某个数字左右。一般而言你希望让所有的CPUs都忙碌,所以默认情况下并行处理的线程个数就是CPUs 的个数。
6. 操作概观
a. 产生一个 I/O completion port。
b. 让它和一个文件 handle 产生关联。
c. 产生一堆线程。
d. 让每一个线程都在 com pletion port上等待。
e. 开始对着那个文件 handle 发出一些 overlapped I/O 请求。
7. 产生一堆线程
一旦 completion port 产生出来,你就可以设立在该 port 上等待的那些线程了。I/O completion port并不自己产生那些线程,它只是使用由你产生的线程。因此,你必须自己以CreateThread() 或 _beginthreadex() (第8章)或AfxBeginThread()(第10章)产生出线程。当你一产生这些线程时,它们都应该在completion port 上等待。当线程开始为各个“请求”服务时,池子里的线程的组织如下:
目前正在执行的线程
+ 被阻塞的线程
+ 在 com pletion port 上等待的线程
--------------------------------------------
= 池子里的所有线程的个数
- IO Complement Port(完成端口)
- 理解完成端口(IO completion port)
- 关于IO完成端口(IO Completion Port),译|摘
- 异步IO框架实现之完成端口(Completion Port)
- 使用完成端口(IO Completion Port)读写文件
- 完成端口(Completion Port)
- 关于IO完成端口与异步IO (About IO Completion Port and Asynchronous I/O)
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 完成端口(Completion Port)详解
- 第十三周项目1.2—分数中的运算符重载
- 第十一周阅读程序3
- 第14周项目2:两个成员的类模板(1)
- Hibernate02(单项有连接表N-1)
- Android从零开始之工欲善其事必先利其器--Android Studio主题颜色配置
- IO Complement Port(完成端口)
- 上传工具
- 第七周项目一友元函数、成员函数和一般函数有区别2
- (selenium 五)unittest通过测试套件组织用例
- 第十四周阅读程序2
- Android面试题二
- 使用bash工具创建ssh key
- 十四周练习
- 第十四周阅读程序3