将多个文件关联到同一个 io 完成端口,同时保持文件流顺序 c#
Posted
技术标签:
【中文标题】将多个文件关联到同一个 io 完成端口,同时保持文件流顺序 c#【英文标题】:Associate several files to the same io completion port, while keeping file stream order c# 【发布时间】:2012-06-20 06:38:10 【问题描述】:我需要将从另一个进程发送给我的对象写入磁盘上的多个文件。 每个对象都带有 fileID(要写入的文件的名称)和数据块。
我想使用 IO 完成端口 (IOCP) 来优化文件写入,使用并发异步 I/O,但我必须同步写入每个文件,例如写入磁盘时,我必须保持每个文件的块顺序,而不是文件顺序。
我了解 .Net 在执行 IO 操作时使用 IOCP,但我如何使其按我想要的方式工作?
【问题讨论】:
【参考方案1】:这很容易做到,您只需要跟踪每个文件的写入位置并在写入每个块时更新它。您在 OVERLAPPED
结构中为异步写入指定写入偏移量,因此只要您跟踪您在每个文件中的位置,您就应该能够只写入块并更新每个文件的写入偏移量。
【讨论】:
以上是关于将多个文件关联到同一个 io 完成端口,同时保持文件流顺序 c#的主要内容,如果未能解决你的问题,请参考以下文章