1

此功能是否影响内存映射文件的性能?SetFileBandwidthReservation是否会影响内存映射文件的性能?

这是我需要解决的问题:

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

“更新器”不断以线性方式访问磁盘,更新数据。他们的系统的设置方式使更新程序始终具有无限数据更新。考虑到它总是接近一整套占用整个2TB磁盘驱动器的方程组的解决方案。更新程序使用ReadFile和WriteFile以线性方式处理数据。

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

我想达到的目标是让“阅读器”具有绝对优先权,以便“更新器”在需要时完全停止,以便“阅读器”尽快获得数据用户的需求。

通过使用SetPriorityClass和SetFileBandwidthReservation调用可解决此问题吗?

我真的很讨厌把同步登录放在“reader”和“updater”中,而是让操作系统关注优先级。

回答

0

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

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

根据您的描述 - 从reader和updater打开独占访问文件解决了读取器不会被更新程序中断的任务。第二个目标是通过读者的请求让更新程序中断。

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

相关问题