如何在windows中打开文件而不阻塞?

如何在windows中打开文件而不阻塞?,windows,winapi,Windows,Winapi,我看到CreateFile函数接受一个FILE_FLAG_OVERLAPPED参数,以使文件io非阻塞。但是,如何使CreateFile调用本身非阻塞 不幸的是,CreateFile是同步的。如果您需要它是非阻塞的,那么您可能正在尝试在UI线程中执行I/O。避免这样 你没有提到编程语言,所以我假设它是C++。您可以使用将I/O密集型工作卸载到工作线程中。例如,您可以将其包装在or中。我知道我可以使用工作线程,而这正是我目前正在实现的解决方案。我想知道是否有可能纯粹使用异步和非阻塞IO来实现这一点

我看到CreateFile函数接受一个FILE_FLAG_OVERLAPPED参数,以使文件io非阻塞。但是,如何使CreateFile调用本身非阻塞

不幸的是,
CreateFile
是同步的。如果您需要它是非阻塞的,那么您可能正在尝试在UI线程中执行I/O。避免这样


你没有提到编程语言,所以我假设它是C++。您可以使用将I/O密集型工作卸载到工作线程中。例如,您可以将其包装在or中。

我知道我可以使用工作线程,而这正是我目前正在实现的解决方案。我想知道是否有可能纯粹使用异步和非阻塞IO来实现这一点。我正在尝试优化传输大量文件的作业。该语言是python,但我很习惯使用python的低级windows API调用。没有异步/非阻塞版本的
CreateFile()
。正如doug所说,
CreateFile()
本身只是同步的。StorageFolder::CreateFileAsync()是winapi++。没有什么神秘之处,它只是在线程池线程上运行。当然你也可以这样做。
StorageFolder
仅适用于Windows应用商店应用程序,而不是标准的Win32应用程序。@Remy这就是Hans建议使用线程池的原因。