我試着讓應用程序讀取文件。文件可能大於2GB,因此我無法將它們完全加載到內存中。由於這種我正在文件讀取系統上的WinRT允許我:與局部緩衝器如何使用IRandomAccessStream和DataReader?
- 讀取文件 - 負載到存儲器件的尺寸5MB 例如,那麼如果字節的所需量在 存在用戶檢查緩衝。
- 給我多線程訪問文件 - 例如我需要讀取2個斷開連接目的的文件。
- 生成的系統必須使用盡可能少的cpu,內存和硬盤時間。
現在我設計的東西,在1線與緩衝區中讀取文件,我有一些問題:
DataReader->LoadAsync(N)
和DataReader->ReadBytes(target_array)
之間會發生什麼?第一個操作是將數據加載到內存中,然後將數據放入目標中?DataReader
(或IRandomAccessStream
,我不知道究竟是哪一個)在交換文件中存儲加載的數據(用ssd驅動器捕獲它:交換放置在hdd上,第二次嘗試讀取相同的數據顯示像hdd一樣的速度)。如何避免它?- 我的閱讀系統設計(
file->buffer->user
)適合DataReader
和IRandomAccessStream
?
@Yakk FYI,WinRT暗示它是C++/CX,而不是C++/CLI –
@LucasTrzesniewski啊,又一種方言?對不起,misedit。 – Yakk
@Yakk不用擔心,是的,他們又提出了另一種方言(不在CLI上運行,沒有GC,因此'gcnew'關鍵字不適合,等等),但它幾乎是相同的語法:-) –