비동기 I/O 및 비동기 RPC
비동기 I/O는 단일 스레드가 여러 I/O 요청을 동시에 관리하는 효율적인 수단입니다. 서버의 비동기 RPC는 RPC 요청에 대해 유사한 용도를 수행합니다. Windows Vista 이전 버전의 Windows에서는 비동기 RPC를 사용하여 서버 프로시저에서 비동기 I/O 요청을 게시하는 것이 좋습니다. 그러나 Windows Vista 이상 버전의 Windows에서는 I/O 완료 포트와 연결된 비동기 I/O 요청이 비동기 RPC에서 지원됩니다.
Windows Vista 이전에는 비동기 I/O 요청이 완료되기 전에 비동기 원격 프로시저 호출이 완료되었을 수 있습니다. 비동기 호출이 완료되면 RPC 런타임에서 예상된 워크로드를 서비스할 수 있는 충분한 스레드가 있다고 판단하면 해당 스레드가 종료될 수 있습니다. 시스템은 모든 I/O 요청을 시작하는 스레드에 바인딩합니다. 스레드가 종료되면 해당 스레드에서 보류 중인 모든 I/O 요청이 중단됩니다. 보류 중인 I/O 요청을 다른 스레드로 이동할 수 없습니다.
따라서 Windows Vista 이전 버전의 Windows를 대상으로 하는 애플리케이션 디자이너는 서버 프로시저에서 동기 I/O를 사용하거나 비동기 I/O를 포함하는 모든 요청을 애플리케이션이 관리하는 스레드 풀에서 실행되는 프로시저에 전달할 수 있습니다. Windows API는 스레드 풀 관리를 위한 함수를 제공합니다. 프로세스 및 스레드 함수를 참조하세요.