如何确保未连接到网络时fopen()不会阻塞?

时间:2020-03-06 14:36:18  来源:igfitidea点击:

我的win32 C ++应用程序经常检查一个文件,该文件通常位于[公司网络中]的网络共享中。但是,如果计算机未连接到网络,则应用程序将冻结几分钟,并且用户通常必须结束该过程。打开文件之前,如何检查文件是否可访问?

检查是否存在任何网络连接可能不够好。用户断开连接的原因是使用不存在该文件的测试网络。

解决方案

将文件访问权限放到单独的线程中?

在我看来,在单独的线程中使用此方法将是我们最好的选择。

文件已存在

我认为线程是最佳选择。

似乎没有一种异步调用CreateFile API的方法。打开文件句柄后,我们可以对其执行异步I / O,但是打开它的操作仍然是同步的。

我们将必须自己管理与线程的同步,因为只有应用才知道何时需要fopen的结果,并且此时它仍可能最终阻塞。