微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c-IO重叠的文件写入与单独线程中的文件写入

与仅在我创建的单独线程中进行文件写入相比,在Windows中将文件写入与IO重叠使用是否有任何优势?

[编辑-请注意,我在进行文件写入时没有系统缓存,即我在CreateFile中使用FILE_FLAG_NO_BUFFERING标志)

解决方法:

由于认情况下所有写入都缓存在系统缓存中,因此进行重叠的I / O或为写入创建单独的线程几乎没有好处.大多数WriteFile调用仅是memcpys的核心,它们由OS与其他写入一起以最佳方式延迟写入磁盘.

当然,您可以通过对CreateFile的标志来关闭缓冲的I / O,然后进行某种异步I / O会有好处-但您可能没有/不应该这样做.

编辑

OP已澄清它们实际上是在使用无缓冲的I / O.在这种情况下,两个建议的解决方案几乎是相同的. Windows内部使用线程池来服务异步I / O请求.但是假设Windows可以更高效,因为它们的一半是在内核中实现的,具有较少的上下文切换等.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐