我有一个带有整数数据的大缓冲区(一个大整数数组),我想将它写入一个文件。
但是我使用的是openMP,我的整个应用程序现在都是多线程的。所以我想知道,在缓冲区已满后,有没有办法让我使用openMP并让多个线程写入同一个文件,对缓冲区进行几次只读访问?
如果使用openMP是不可能的,是否有可能以其他方式进行?我该怎么办?
你知道有没有这样的图书馆?
答案 0 :(得分:3)
写入文件的多个线程会使进程比现在更慢,因为这会强制执行许多seek
操作(考虑到默认的磁性HDD,这是最慢的操作)。
考虑使用一个线程将数据写入磁盘,但是使用多个线程直接访问内存数组进行读取。一旦不再分配该阵列,就应该在磁盘上执行访问,由于寻道时间导致再次大幅减速。要减少减速,必须实现一些缓冲方案或仅使用一个线程。
还有其他事情需要考虑,具体取决于您的阅读方式和算法的执行情况,但我相信这些是一般性的。