在我的程序中,我持有两个用于写作的文件,其中包含大量数据的内容文件和一个索引文件,其中包含一张地图,到目前为止已经编写了大量数据。

我想将它们均尽可能地表现出来,并尽可能地将数据文件中的块编写在地图文件中的相应块之前(自然)。

捕获是,我想避免阻止IE进行延迟和吞吐量季节的Fsync。

有任何想法吗?

有帮助吗?

解决方案

我认为您无法在单个执行路径中轻松地执行此操作。您需要Fsync才能保证写入磁盘 - 这将不得不等待写作。

我怀疑通过将写作任务委派给单独的线程或进程是有可能(但不容易)这样做的。在您现有程序中生成数据,并使用任何看起来明智的方法将其“写入”到第二个线程/进程。这可能是无障碍的。然后,第二个线程将将任何新数据写入您的内容文件,然后将FSYNC写入,然后编写索引文件,然后再次检查新数据。关键设计决策与您如何将两个执行路径分开,如何在它们之间进行交流以及是否需要将写入报告给主程序。这仍然可能存在延迟和吞吐量问题,但这是选择同步索引文件和内容文件的成本的一部分。至少在等待磁盘时,有机会完成工作。

值得一看的是,这是否已被封装得很好,以便在任何交易数据库的来源中对您有用。安装内容文件的文件系统时,您也可以调查同步选项。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top