将多个文件关联到同一个 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#的主要内容,如果未能解决你的问题,请参考以下文章

窗口 HTTP IO 完成端口

也谈IO完成端口

多个套接字可以与 UDP 的同一端口相关联吗?

如何以最大输出大小压缩多个文件,同时将文件对保持在一起

将多个 CSS 转换减少到更少,同时保持位置

合并多个文件,同时保持其身份