gpt4 book ai didi

c++ - 有没有可能 : Using multiple threads to stream output to different files/

转载 作者:行者123 更新时间:2023-11-28 05:16:11 25 4
gpt4 key购买 nike

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

最佳答案

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

有一些基本障碍限制了这种方法的 yield 。第一是硬件能力。 HDD 和 SSD 的读取和写入速度有限,尝试同时读取/写入多个文件可能无法显着提高速度。事实上,在硬盘上尝试一次做多件事实际上会在很多情况下损害性能,这可以在我提供的链接的基准测试中看到。似乎使用 2-4 个线程可以在阅读方面取得明显的进步,但写作方面的规范令人失望。多线程肯定会帮助加速数据的序列化。

关于c++ - 有没有可能 : Using multiple threads to stream output to different files/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592453/

25 4 0