c++ - 同时读取和写入不同的文件 - 多线程有用吗?
问题描述
我正在逐行读取一个巨大文件中的文本,对它们执行一些操作,然后将结果存储在不同的文件中。如果我有两个线程,一个从一个文件中读取数据,另一个线程是否能够同时将数据写入另一个文件?或者因为它们是相同的硬盘多线程没有意义,因为它们会相互等待?
解决方案
如果我理解正确,你有三个步骤
- 读
- 过程
- 写
当然,硬盘不可能同时进行读写操作。但是,它可以支持这一点:
- 读A(高清)
- 读取 B (HD),进程 A (CPU)
- 写A(HD),进程B(CPU)
- 读 C (HD)
- 写 B (HD), 进程 C (CPU)
- ...
简而言之,在处理过程中,您的程序受 CPU 限制,而 HD 处于空闲状态。在写入时,它是 HD-bound(或 IO-bound)并且 CPU 处于空闲状态。交错这些东西可以提高整体吞吐量。
推荐阅读
- nlp - 如何使用汉明距离对相似类进行相关性分析?
- elasticsearch - ElasticSearch - 匹配或更少
- azure - WebSocket (OmniFaces) 的 Azure WAF 问题
- sql - 哪个更快:从 R (DBI) 内部进行 SQL 联接,还是在 PGAdmin 或 DataGrip 内部进行联接,保存 CSV,然后导入 R?
- php - 在文本之间添加连字符
- java - 需要封闭类实例但不需要内部类的 Java 方法
- python - 如何更改sql中特定行中的值?
- linux - 如何在不需要 sudo 或 Ubuntu/RaspberrypiOS 上的任何授权的情况下从脚本运行 bettercap 2?
- c# - String.Remove 抛出 ArgumentOutOfRangeException
- c# - Html.Raw() 有没有办法处理来自字符串的 IHTMLHelper 项目,例如 @using (Html.BeginForm()?