阅读:1246回复:6
纯技术问题
有一个程序,需要同时打开多个大文件进行读操作,比如32个40M的文件。
分别读一部分内容后输出到指定的设备,设备在中断处理程序中将内容送出。 问题:因为中断教快,不能在指定的时间内读取文件,导致设备工作不流畅。 是否有好的处理文件的方法,能够快速读取数据? |
|
沙发#
发布于:2001-12-31 09:30
其实我的应用中,文件访问是顺序的,而且每次读取的长度是一样的,在卡中对应每个通道有两块映射的内存区域与之对应,其中一块用来做cache,但还是有我所说的问题。
上层程序是用普通的文件操作做的,我希望其它的方式会对性能有所提高。 |
|
板凳#
发布于:2001-12-30 19:31
无论哪种方法. 最终都向FSD请求读文件. 最快的应该是自己预先CACHE一段内容. 等中断来了直接从内存TRANSFER. 由于东西太大,不能全部CACHE下来. 这就要靠你的预测算法了.
|
|
|
地板#
发布于:2001-12-29 17:03
我用VC写的程序,好象没有Alert IO。
想用内存映像试一试。 谢谢! |
|
地下室#
发布于:2001-12-29 16:46
Alert IO呢,这个支持吗。
类似于完成端口,但是这个东西是使用一个CallBack函数来做,不用线程,效率相对完成端口要低,但是也是第二好的方法了 (再不支持,就没有办法了) 另外,在这里胡说一句,win98是桌面系统,你不能对他期望太高,像你的这种要求性能较高的东西,应该在nt下做!!! -----------个人意见! |
|
|
5楼#
发布于:2001-12-29 16:40
谢谢!
可我在98下,98对完成端口不支持。 |
|
6楼#
发布于:2001-12-29 13:19
给你一点提示,自己看
文件映射(File Mapping) 完成端口(Completion Port) 看书 《windows高级编程指南》 第三版 清华大学出版社 作者 : Jeffery Richer |
|
|