War*_*pin 7 c++ windows file-io
在Windows中使用带有重叠IO的文件写入是否有任何优势,而不仅仅是在我创建的单独线程中编写文件?
[编辑 - 请注意我在没有系统缓存的情况下进行文件写入,即我在CreateFile中使用FILE_FLAG_NO_BUFFERING标志)
由于默认情况下所有写入都缓存在系统缓存中,因此完成重叠I/O或创建单独的写入线程几乎没有什么优势.大多数WriteFile调用只是它们核心的memcpys,它们通过OS以其他写入的最佳方式懒惰地写入磁盘.
当然,你可以通过标志关闭缓冲I/O到CreateFile,然后做一些异步I/O也有好处 - 但你可能没有/不应该这样做.
编辑
OP已澄清他们实际上正在使用无缓冲的I/O. 在这种情况下,两个建议的解决方案几乎相同; 内部Windows使用线程池来为异步I/O请求提供服务.但假设Windows可以更高效,因为它们的一半是在内核中实现的,具有较少的上下文切换等.
| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |