我有一个程序,从2个文本文件读取数据,然后将结果保存到另一个文件。由于有许多数据需要读取和写入,这会对性能造成影响,因此我希望并行读取和写入操作。
我最初的想法是,以两个线程为例,一个线程从开头读/写,另一个线程从文件中间读/写。由于我的文件格式化为行,而不是字节(每行可能有不同的数据字节),因此按字节查找对我不起作用。我能想到的解决方案是使用getline()先跳过前面的行,这可能效率不高。
有没有什么好方法可以在文件中查找到指定的行?或者你有没有其他的想法来并行文件读写?
环境: Win32、C++、NTFS、单硬盘
谢谢。
-Dbger
发布于 2010-01-04 00:57:17
这并不是对你问题的真正回答,而是一种重新设计(我们都讨厌但又忍不住要这么做)。如前所述,尝试使用多线程来加速硬盘上的I/O可能不会有什么帮助。
然而,根据数据敏感度、吞吐量需求、数据大小等,可以使用另一种方法。在内存中创建一个结构来维护数据的图片并允许轻松/快速地更新数据中任何位置的文本行并不困难。然后,您可以使用一个专门的线程来简单地监视该结构,并将数据写入磁盘。按顺序将数据写入磁盘可能非常快;它可能比随机查找不同部分并将其分片写入要快得多。
https://stackoverflow.com/questions/1993699
复制相似问题