C++ - 如何分块文件以进行同步/异步处理?

标签 c++ multithreading asynchronous pthreads

如何根据行数读取和拆分/分块文件?

我想将一个文件分成单独的缓冲区,同时确保一行不会在两个或多个缓冲区之间拆分。我计划将这些缓冲区传递到它们自己的 pthread 中,以便它们可以执行某种类型的同步/异步处理。

我已阅读下面的答案 reading and writing in chunks on linux using c但我不认为它能准确回答关于确保一行不被分成两个或更多缓冲区的问题。

最佳答案

文件是如何编码的?如果每个字节代表一个字符,我将执行以下操作:

  1. 使用 mmap() 内存映射文件。
  2. 通过根据适当的 block 大小计算它来告诉作业它们大概的开始和结束时间。
  3. 让每个作业通过查找下一个 '\n' 找到其实际开始和结束。
  4. 同时处理各个 block 。
  5. 请注意,第一个 block 需要特殊处理,因为它的起点不是近似的而是精确的。

关于C++ - 如何分块文件以进行同步/异步处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484184/

相关文章:

c++ - 如何在 C++ 中正确声明和使用 std::array

java - 可变对象的安全发布

在 UITableView 中使用 insertRow 进行 Swift 无效更新

java - Spring 3 通过注释进行任务调度在服务器上同时运行多个实例

python - 将 python 函数列表异步应用于单个参数

c# - 用于从硬件设备流式传输数据的异步 API

javascript - Node.js 从 do while 循环中调用异步函数

c++ - 如何在这里创建一个循环? C++

c++ - 用纯虚拟类 copy-and-swap 成语

c++ - 为什么 cout 的默认精度不影响评估结果?