我正在寻找处理具有以下结构的二进制文件:
[元数据: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 的正确对象是什么: