c++中读写文件的多线程
Multi Threading for Reading/Writing a File in C++?
我对c++中的File
操作有一个非常基本的查询,如果这是一个非常愚蠢的问题,请原谅我。在我的应用中,我有read/write files
的函数。我想知道是否有可能通过多线程进程来加速读/写操作。我有这个疑问,因为CPU可能表现更好,但硬盘可能表现更差。我有以下情况:1. 如果多个线程一次只完成读或写,而不是同时完成读和写,那会怎么样?2. 如果这里只考虑一个文件,即多个线程同时对同一个文件执行读/写,会怎么样?3.如果多个文件被多个线程读/写,那么只有一个线程负责一个文件呢?4. 如果读了会怎么样?写是由两个不同的线程同时完成的?谢谢你
多线程(和异步i/o)是延迟隐藏优化,而不是速度增强。通过多个线程同时访问单个文件可能不会给您带来太多好处。当您在等待文件操作完成时,如果您想要做一些其他工作(可能是一些用户交互),线程可以帮助您。它在您的一个操作阻塞的地方最有帮助(例如您正在等待来自键盘/鼠标的用户输入或正在等待数据或连接到达网络套接字)。例如,您可能有一个线程与每个套接字相关联。
所以你的情况3:
如果多个文件被多个线程读写怎么办只有1个线程负责一个文件?
是我认为唯一值得追求的。然后,只有当您确定在进行文件操作时还有其他事情需要执行
您可能会获得速度改进,但线程会带来很多开销。你需要确保你正在加载大量的数据,否则线程间通信的开销会杀死你。
也就是说,您最好使用各种异步文件io选项。它们大多是平台特定的,但我相信boost::asio可以为您抽象出来…
相关文章:
- boost::文件系统::recursive_directory_iterator多线程安全
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- C++中的多线程文件哈希
- 我们是否需要互斥锁来执行多线程文件 IO
- Borland C++ 5.02 中使用第三方头文件的多线程
- 多线程文件 IO 程序在线程数增加时行为不可预测
- 多线程存储到文件中
- c++:写入多线程程序中的文件
- 多线程文件读取为每个线程生成相同的结果
- 通过多线程处理确定每个字符在文件中出现的次数
- c++多线程读取文件
- 多线程文件读取
- 使用C 中的Windows API使用多线程列出文件
- 用c++对文件进行多线程读取
- Visual Studio使用多线程DLL发布应用程序文件
- 多线程文件保存操作
- 如何在C++中实现多线程文件处理
- 在c++中实现高效多线程文件I/O
- 多线程文件流
- 使用c++将多线程文件复制到不同的硬盘驱动器