2015-10-20 96 views
0

我看到CreateFile函数需要一个FILE_FLAG_OVERLAPPED参数来使文件io无阻塞。但是,如何使CreateFile调用本身为非阻塞?如何在不阻塞窗口的情况下打开文件?

+0

StorageFolder :: CreateFileAsync()是winapi ++。没有什么非常神秘的,它只是在一个线程池线程上运行。当然你也可以这样做。 –

+0

'StorageFolder'仅适用于Windows应用商店应用,不适用于标准Win32应用。 –

+0

@Remy这就是为什么Hans建议使用线程池。 –

回答

2

不幸的是,CreateFile是同步的。如果你需要它是非阻塞的,你可能试图在UI线程中做I/O操作。避免这种情况。

您没有提及编程语言,所以我会认为它是C++。您可以使用the standard library's threading facilities将I/O密集型工作卸载到工作线程中。例如,您可以将其包装在packaged_taskasync中。

+0

我知道我可以使用工作线程,它目前是我正在实施的解决方案。我想知道是否可以纯粹使用异步和非阻塞IO。我正在尝试优化传输大量文件的作业。该语言是python,但我很自在地使用python的低级窗口API调用。 – Maxaon3000

+0

没有可用的'CreateFile()'的异步/非阻塞版本。像doug说的那样,'CreateFile()'本身只是同步的。 –

相关问题