我有一个读写大数据的程序。当写入本地驱动器上的文件时,读取和写入效果很好。当目标是网络共享时,当我运行同一程序的两个实例时,第一个启动的程序挂在 WriteFile 上。当我调试时,网络共享上的 WriteFile 被阻塞。
我使用 WaitForSingleObject(超时 60 秒)在 WriteFile 上实现了重叠 IO。现在 WriteFile 不再阻塞,但即使整个数据通过网络写入一次也不会阻塞。当我通过网络共享使用 WriteFile 时是否必须考虑重试?如何通过网络在文件上正确使用 WriteFile?
更新:
我参考了以下链接以使用 WriteFile 实现重叠 IO。
http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/a5e9514b-53e0-410c-a975-41a5ca91e4be
该链接说我在没有 GENERIC_READ 的情况下单独使用了带有 GENERIC_WRITE 的 CreateFile。但是,如果我还想从文件中读取数据怎么办?这是否意味着我根本无法为 WriteFile 实现异步 io。实际上,在使用 Overlapped IO 写入文件之前,我必须从同一个文件中读取一个标题。我怎样才能做到这一点??