我需要读取/解析大小为8192字节的固定块的二进制文件(4〜6 GB)。我目前的解决方案涉及使用单生产者多用户(SPMC)模式对文件块进行流式传输。多线程文件读取
编辑
文件大小= N * 8192个字节
所有我需要做的是做一些事来每个8192个字节。该文件只需要自上而下阅读一次。
转念一想,这应该是一个尴尬的并行问题,我想有X线程在同等范围内读取(文件大小/ X)独立尺寸。线程根本不需要互相通信。
我已经试过产卵X线程打开相同的文件,寻求各自的部分来处理,但是,这种解决方案似乎有一个问题,在由于HDD机械力求显然比执行更糟糕SPMC解决方案。
如果在SSD上使用此方法,会有什么区别吗?
或者更简单的方法是只对内存映射整个文件并使用#pragma omp parallel for
来处理这些块?我想我会需要足够的RAM来做到这一点?
你会建议什么?
您不会对文件的语法和格式有足够的了解。 –
它是一个N * 8192字节的二进制文件,我需要对这8192个字节分别进行操作。 –
系统调用(假设Linux操作系统)提到[这里](http://stackoverflow.com/a/41237690/841108)可能会有所帮助。但我猜想瓶颈是磁盘本身。你可能不需要太多的线程。 (所以* X *将会是4到10,不会有很多)。你应该基准。这不是一个令人尴尬的并行问题,因为硬件磁盘一次只能处理一个(或很少)请求。 –