异步 I/O 和异步 RPC
异步 I/O 是单个线程同时管理多个 I/O 请求的有效方法。 服务器上的异步 RPC 可实现 RPC 请求的类似用途。 在 Windows Vista 之前的 Windows 版本中,不建议使用异步 RPC 从服务器过程发布异步 I/O 请求。 但是,在 Windows Vista 和更高版本的 Windows 中,异步 RPC 支持与 I/O 完成端口关联的异步 I/O 请求。
在 Windows Vista 之前,异步远程过程调用可能会在异步 I/O 请求完成之前完成。 异步调用完成后,如果 RPC 运行时确定其有足够的线程可用于处理预期工作负荷,则其线程可能会终止。 系统将所有 I/O 请求绑定到启动它们的线程。 如果线程终止,则会中止该线程上挂起的任何 I/O 请求。 挂起的 I/O 请求无法移动到另一个线程。
因此,面向 Windows Vista 之前的 Windows 版本的应用程序设计人员可以在服务器过程中使用同步 I/O,也可以将涉及异步 I/O 的所有请求转发到在应用程序管理的线程池上执行的过程。 Windows API 提供用于线程池管理的函数。 请参阅 进程和线程函数。