是否可能:使用多个线程将输出流式传输到不同的文件/

时间:2017-03-04 05:25:02

标签: c++ multithreading openmp

我正在开发一个C ++项目,通过一些已知的力场跟踪粒子。代码以粒子的位置和动量的形式生成大量数据。我已经在粒子跟踪例程中使用了openmp指令。但是,整体性能最终取决于写入输出文件所花费的时间。我知道不建议使用线程将数据写入输出文件(我已经尝试过)。我很好奇是否有任何方法可以使用多个线程将数据写入多个文件(假设我有4个线程,每个线程同时写入4个文件)。你能建议我怎么办吗?有关如何有效地将数据流传输到文件的任何提示? 提前致谢

1 个答案:

答案 0 :(得分:1)

这是一篇关于并发I / O主题的有趣文章: http://www.drdobbs.com/parallel/multithreaded-file-io/220300055

有一些基本障碍限制了这种方法的收益。第一是硬件能力。 HDD和SSD具有有限的读写速度,并且尝试同时读/写多个文件可能不会显着提高速度。实际上,在硬盘上试图同时执行多项操作实际上会在很多情况下损害性能,这可以在我提供的链接的基准测试中看到。似乎有2-4个线程在阅读中可以获得显着的增益,但是写作的规格令人失望。多线程肯定会有助于加速数据的序列化。