我试着让应用程序读取文件。文件可能大于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'关键字不适合,等等),但它几乎是相同的语法:-) –