1

我有一个带有整数数据的大缓冲区(一个大整数数组),我想将它写入一个文件。

但是我正在使用 openMP,我的整个应用程序现在是多线程的。所以我想知道,在缓冲区满后,我有没有办法使用 openMP 并让多个线程写入同一个文件,从而对缓冲区进行多次只读访问?

如果使用 openMP 是不可能的,是否可以通过其他方式做到这一点?我该怎么做?

您知道有哪些图书馆可以这样做吗?

4

1 回答 1

3

写入文件的多个线程将使进程比现在更慢,因为这将强制执行许多seek操作(考虑到默认磁性 HDD,这是最慢的操作)。

考虑仅使用一个线程将数据写入磁盘,但使用多个线程直接访问内存数组进行读取。一旦不再分配该阵列,则应在磁盘上执行访问,由于寻道时间再次导致速度大大降低。为了减少减速,您必须实施一些缓冲方案或仅使用一个线程。

根据您的读数是如何执行的以及您的算法是如何实现的,还有其他一些事情需要考虑,但我相信这些是一些一般性的思路。

于 2013-03-17T17:25:35.453 回答