1

此功能是否影響內存映射文件的性能?SetFileBandwidthReservation是否會影響內存映射文件的性能?

這是我需要解決的問題:

我有兩個應用程序的磁盤訪問的競爭:「讀者」和「更新」。整個系統在Windows Server 2008 R2 x64上運行

「更新器」不斷以線性方式訪問磁盤,更新數據。他們的系統的設置方式使更新程序始終具有無限數據更新。考慮到它總是接近一整套佔用整個2TB磁盤驅動器的方程組的解決方案。更新程序使用ReadFile和WriteFile以線性方式處理數據。

用戶偶爾會調用「Reader」來獲取某些數據。通常用戶會從驅動器讀取幾個4kb的塊並停止。有時用戶需要按順序讀取最多100MB。在特殊情況下高達幾千兆字節。 Reader將文件映射到內存以獲取所需的數據。

我想達到的目標是讓「閱讀器」具有絕對優先權,以便「更新器」在需要時完全停止,以便「閱讀器」儘快獲得數據用戶的需求。

通過使用SetPriorityClass和SetFileBandwidthReservation調用可解決此問題嗎?

我真的很討厭把同步登錄放在「reader」和「updater」中,而是讓操作系統關注優先級。

回答

0

您提到的功能與您的任務IMO無關。

似乎實際上是要求從多個進程同時進行文件訪問 - 而操作系統只會按照您的要求進行操作。因此,你必須做你討厭的事情〜增加一些同步邏輯來確保正確性。

根據您的描述 - 從reader和updater打開獨佔訪問文件解決了讀取器不會被更新程序中斷的任務。第二個目標是通過讀者的請求讓更新程序中斷。

處理問題的方式取決於是否可以在工作中停止更新程序。在簡單情況下,讀者可能會通知更新者必須儘快停止工作並等待。

相關問題