gpt4 book ai didi

multithreading - 如何并行化文件读写

转载 作者:行者123 更新时间:2023-12-04 02:51:25 25 4
gpt4 key购买 nike

我有一个程序可以从 2 个文本文件中读取数据,然后将结果保存到另一个文件中。由于要读取和写入的数据很多,这会导致性能下降,因此我想将读取和写入操作并行化。

我最初的想法是,以2个线程为例,一个线程从头读/写,另一个线程从文件中间读/写。由于我的文件被格式化为行,而不是字节(每行可能有不同字节的数据),按字节查找对我不起作用。我能想到的解决方案是先使用 getline() 跳过前几行,这可能效率不高。

有什么好的方法可以在文件中寻找指定的行吗?或者你有什么其他的想法来并行文件读写?

环境:Win32、C++、NTFS、单硬盘

谢谢。

-Dbger

最佳答案

一般来说,您不想并行化磁盘 I/O。硬盘不喜欢随机 I/O,因为它们必须不断地四处寻找数据。假设您没有使用 RAID,并且您使用的是硬盘驱动器而不是某些固态内存,那么如果并行化 I/O,您将​​看到严重的性能下降(即使使用此类技术,您仍然可以看到一些性能进行大量随机 I/O 时性能下降)。

要回答你的第二个问题,在文件中寻找某一行确实不是一个好方法。您只能使用 read 显式地查找字节偏移量功能(有关如何使用它的更多详细信息,请参阅 this page

关于multithreading - 如何并行化文件读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com