Share via


Ordenação causal de chamadas assíncronas

Em um aplicativo RPC assíncrono, é possível que um thread de cliente faça uma segunda chamada assíncrona em um identificador de associação antes que uma chamada anterior feita nesse identificador seja concluída. A biblioteca de tempo de execução RPC lida com essa situação da seguinte maneira:

  • O mecanismo de RPC assíncrono garante que chamadas assíncronas feitas no mesmo identificador de associação, no mesmo thread, no mesmo nível de segurança, sejam expedidas na ordem em que foram feitas. A execução real das chamadas pode ocorrer fora de ordem.
  • Assim como acontece com chamadas síncronas, chamadas de procedimento remoto assíncrono de diferentes threads de cliente são executadas simultaneamente.
  • Se uma chamada assíncrona de um aplicativo cliente for seguida por uma ou mais chamadas síncronas, a chamada assíncrona poderá ser executada enquanto as chamadas síncronas estiverem em execução. Independentemente do status da chamada assíncrona, as chamadas síncronas são executadas na ordem em que são recebidas pelo servidor.
  • Se um aplicativo cliente selecionar ordenação nãocausal para um identificador de associação específico, ele desabilita a serialização para esse identificador. Os aplicativos habilitam a ordenação nãocausal chamando RpcBindingSetOption com o parâmetro Option definido como RPC_C_OPT_BINDING_NONCAUSAL e o parâmetro OptionValue definido como TRUE. Para obter detalhes, consulte Constantes de opção de associação.