代码之家  ›  专栏  ›  技术社区  ›  Paul J. Lucas

为什么异步使用ReadDirectoryChangesW?

  •  5
  • Paul J. Lucas  · 技术社区  · 17 年前

    ReadDirectoryChangesW() 也看到了 CDirectoryChangeWatcher project 当前的 线程在调用时不会阻塞,但至少对于使用完成端口的CDirectoryChangeWatcher代码来说是这样 GetQueuedCompletionStatus() , 那 无论如何,线程都会阻塞(如果没有更改)。

    所以如果我打电话 读取目录更改() 读取目录更改() 异步?

    3 回复  |  直到 12 年前
        1
  •  5
  •   Rob Kennedy    17 年前

    当你异步调用它时,你可以更好地控制 哪个 GetQueuedCompletionStatus 有一个超时参数 ReadDirectoryChangesW

        2
  •  1
  •   Kevin Montrose    17 年前

    如果您需要调用线程不阻塞,您可以调用ReadDirectoryChangesW,使其异步返回结果。这是同义反复,但却是事实。

    此类线程的候选者:UI线程和;仅负责为多种资源(套接字、任何类型的IPC、独立文件等)提供服务的任何线程。

    由于不熟悉这个项目,我想CDirectoryChangeWatcher不在乎它的工作线程是否阻塞。一般来说,这就是工作线程的本质。

        3
  •  0
  •   Alex Jenter    16 年前

    我试着用 ReadDirectoryChanges 在同步的工作线程中,你猜怎么着,它被阻塞了,这样线程就不会在程序退出时自行退出。 因此,如果你不想使用像TerminateThread这样的邪恶东西,你应该使用异步调用。

    推荐文章