如何根据行数读取和拆分/分块文件?
我想将一个文件分成单独的缓冲区,同时确保一行不会在两个或多个缓冲区之间拆分。我计划将这些缓冲区传递到它们自己的 pthread 中,以便它们可以执行某种类型的同步/异步处理。
我已阅读下面的答案 reading and writing in chunks on linux using c但我不认为它能准确回答关于确保一行不被分成两个或更多缓冲区的问题。
最佳答案
文件是如何编码的?如果每个字节代表一个字符,我将执行以下操作:
- 使用
mmap()
内存映射文件。 - 通过根据适当的 block 大小计算它来告诉作业它们大概的开始和结束时间。
- 让每个作业通过查找下一个
'\n'
找到其实际开始和结束。 - 同时处理各个 block 。
- 请注意,第一个 block 需要特殊处理,因为它的起点不是近似的而是精确的。
关于C++ - 如何分块文件以进行同步/异步处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484184/