我已经阅读了ReadDirectoryChangesW()
的文档,也看到了 CDirectoryChangeWatcher
project,但都没有说为什么要异步调用它。我知道当前线程不会阻塞,但是至少对于使用完成端口的CDirectoryChangeWatcher代码而言,当它调用 GetQueuedCompletionStatus()
时,该线程无论如何都会阻塞(如果没有更改)。
因此,如果我首先在一个单独的线程中同步调用ReadDirectoryChangesW()
而不关心它是否会阻塞,那为什么我要异步调用ReadDirectoryChangesW()
?
最佳答案
异步调用它时,您可以更好地控制等待哪个线程。它还允许您使一个线程等待多个事件,例如目录更改,事件和消息。最后,即使您是在与最初设置 watch 相同的线程中进行等待,它也使您可以控制愿意等待多长时间。 GetQueuedCompletionStatus
具有ReadDirectoryChangesW
本身不提供的超时参数。
关于windows - 为什么要异步使用ReadDirectoryChangesW?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1126799/