Compartilhar via


E/S assíncrona e RPC assíncrona

E/S assíncrona é um meio eficiente para um único thread gerenciar várias solicitações de E/S simultaneamente. O RPC assíncrono no servidor realiza uma finalidade semelhante para solicitações RPC. Em versões do Windows anteriores ao Windows Vista, a postagem de solicitações de E/S assíncronas de procedimentos de servidor usando RPC assíncrona é desencorajada. No entanto, no Windows Vista e em versões posteriores do Windows, solicitações de E/S assíncronas associadas a uma porta de conclusão de E/S têm suporte pelo RPC assíncrono.

Antes do Windows Vista, uma chamada de procedimento remoto assíncrono pode ser concluída antes da conclusão da solicitação de E/S assíncrona. Quando a chamada assíncrona for concluída, seu thread poderá ser encerrado se o runtime do RPC decidir que tem threads suficientes disponíveis para atender à carga de trabalho esperada. O sistema associa todas as solicitações de E/S ao thread que as inicia. Se o thread for encerrado, todas as solicitações de E/S pendentes nesse thread serão anuladas. As solicitações de E/S pendentes não podem ser movidas para outro thread.

Portanto, os designers de aplicativos que direcionam versões do Windows antes do Windows Vista podem usar E/S síncrona em procedimentos de servidor ou encaminhar todas as solicitações que envolvem E/S assíncrona para procedimentos executados em um pool de threads que o aplicativo gerencia. A API do Windows fornece funções para o gerenciamento do pool de threads. Consulte Funções de processo e thread.