首页 > 解决方案 > 同时读取和写入不同的文件 - 多线程有用吗?

问题描述

我正在逐行读取一个巨大文件中的文本,对它们执行一些操作,然后将结果存储在不同的文件中。如果我有两个线程,一个从一个文件中读取数据,另一个线程是否能够同时将数据写入另一个文件?或者因为它们是相同的硬盘多线程没有意义,因为它们会相互等待?

标签: c++multithreadingfilec++11

解决方案


如果我理解正确,你有三个步骤

  • 过程

当然,硬盘不可能同时进行读写操作。但是,它可以支持这一点:

  • 读A(高清)
  • 读取 B (HD),进程 A (CPU)
  • 写A(HD),进程B(CPU)
  • 读 C (HD)
  • 写 B (HD), 进程 C (CPU)
  • ...

简而言之,在处理过程中,您的程序受 CPU 限制,而 HD 处于空闲状态。在写入时,它是 HD-bound(或 IO-bound)并且 CPU 处于空闲状态。交错这些东西可以提高整体吞吐量。


推荐阅读