Windows MapViewOfFile 和并行处理

问题描述 投票:0回答:0

我正在寻找处理具有以下结构的二进制文件:

[元数据:Key1:Offset1,Size1 | Key2 : Offset2, Size2,...][ 与 Key 1 相关的数据 ][ 与 Key 2 相关的数据] ^ 偏移量 1 ^偏移量 2

每个块的大小可以不同,每次处理的块可以不同,对块的处理也可以不同。 整体的功能大概就是ProcessFile(File, KeyList, KeyOptions)。

在伪代码中,核心循环将遵循:

omp parallel for
    for Key in KeyList:
        - Retrieve Key Offset, KeySize
        - ProcessBlock(Block, KeyOptions[Key])

为了最大效率,并避免一次读取所有文件,我在 Windows 上使用内存映射文件。我的问题是管理并行 for 循环中的块以最小化开销的正确方法。 创建MapViewOfFile的过程是CreateFile -> CreateFileMapping -> CreateMapViewOfFile。传递给 ProcessBlock 的正确对象是什么:

  • 文件映射和偏移/大小?
  • MapViewOfFile?
c++ windows memory-mapped-files
© www.soinside.com 2019 - 2024. All rights reserved.