如果映射文件数据完全驻留在物理内存中,通过定义起始/结束字节的部分数量并让单独的线程处理每个部分来并行读取数据是否有任何好处?目标是允许从大型二进制文件频繁快速读取数据。
我进行了一些测试(使用Java NIO),其中每个线程(使用4个线程进行测试)都可以访问mmap的引用,但由于每个线程更改mmaped文件中的内部指针以读取下一组字节,因此这似乎不安全。我正在考虑将一个文件分成4个mmaped块,供每个线程使用。
更新: 为了提供更多上下文信息,最终我要做的是拥有一个数据结构,该数据结构将引用多个mmaped文件,然后这些引用可以提供给某些函数,该函数将进行循环扫描测试值并将它们放入字节缓冲区。
更新: 这是针对只读文件的。
我进行了一些测试(使用Java NIO),其中每个线程(使用4个线程进行测试)都可以访问mmap的引用,但由于每个线程更改mmaped文件中的内部指针以读取下一组字节,因此这似乎不安全。我正在考虑将一个文件分成4个mmaped块,供每个线程使用。
更新: 为了提供更多上下文信息,最终我要做的是拥有一个数据结构,该数据结构将引用多个mmaped文件,然后这些引用可以提供给某些函数,该函数将进行循环扫描测试值并将它们放入字节缓冲区。
更新: 这是针对只读文件的。