多线程写入文件C ++

时间:2013-03-17 17:08:09

标签: c++ multithreading openmp

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

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

如果使用openMP是不可能的,是否有可能以其他方式进行?我该怎么办?

你知道有没有这样的图书馆?

1 个答案:

答案 0 :(得分:3)

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

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

还有其他事情需要考虑,具体取决于您的阅读方式和算法的执行情况,但我相信这些是一般性的。