2

这个函数会影响内存映射文件的性能吗?

这是我需要解决的问题:

我有两个竞争磁盘访问的应用程序:“reader”和“updater”。整个系统在 Windows Server 2008 R2 x64 上运行

“更新程序”不断以线性方式访问磁盘,更新数据。他们的系统是这样设置的,即更新程序总是有无限的数据要更新。考虑到它不断逼近占用整个 2TB 磁盘驱动器的大量方程的解。Updater 使用 ReadFile 和 WriteFile 以线性方式处理数据。

用户偶尔会调用“阅读器”来获取一些数据。通常用户会从驱动器读取几个 4kb 块并停止。有时用户需要顺序读取多达 100mb。在特殊情况下高达数 GB。Reader 将文件映射到内存以获取所需的数据。

我想要实现的是让“读者”拥有绝对优先权,以便“更新程序”在需要时完全停止,以便“读者”能够尽快获得用户需要的数据。

使用 SetPriorityClass 和 SetFileBandwidthReservation 调用是否可以解决此问题?

我真的很讨厌将同步登录放在“阅读器”和“更新器”中,而是让操作系统处理优先级。

4

1 回答 1

0

您提到的功能与您的任务无关,IMO。

似乎实际上是在要求从多个进程同时访问文件 - 而操作系统只会按照您的要求进行操作。因此,你必须做你讨厌的事情,添加一些同步逻辑来确保正确性。

根据您的描述 - 打开文件以供阅读器和更新程序独占访问解决了使阅读器不受更新程序干扰的任务。第二个目标是使更新程序可以根据读者的请求中断。

处理它的方法取决于是否可以在其工作过程中停止更新程序。在简单的情况下,阅读器可能会通知更新程序它必须尽快停止工作并等待。

于 2010-06-13T09:50:38.007 回答