【发布时间】:2018-09-21 09:58:15
【问题描述】:
假设我为异步 I/O(使用 FileOptions.Asynchronous)打开了一个 FileStream,从快速测试看来我可以对其进行正常的同步 I/O,结果与我没有询问就打开它一样用于异步。
这样做有什么隐藏的陷阱吗?我想我需要传入一个特殊标志来指示异步的原因是因为有一些额外的开销。
我想要这样做的原因仅仅是因为代码重用 - 我已经有一个函数可以异步打开我想要调用的文件,但调用代码是同步的。
【问题讨论】:
-
我认为这是一个 X/Y 问题...您真正想在这里解决什么问题?请具体。你遇到了什么问题?
-
问题是我有一个为异步 I/O 打开的流,但我想对其进行同步 I/O,我想知道这是否安全
-
您的保修说明这样做没有问题。就像异步使用它很可能无论如何都同步完成一样。
-
这取决于您尝试执行的操作,如果它们相互冲突,例如。查看文件然后在文件仍处于打开状态时进行编辑,那么操作系统将限制您。无论操作是否同步,这都更少,更多的是与操作系统限制有关。如果您尝试进行非冲突操作,那么您应该没问题。