Classement causal des appels asynchrones

Dans une application RPC asynchrone, il est possible pour un thread client d’effectuer un deuxième appel asynchrone sur un handle de liaison avant qu’un appel antérieur effectué sur ce handle ne soit terminé. La bibliothèque d’exécution RPC gère cette situation comme suit :

  • Le mécanisme RPC asynchrone garantit que les appels asynchrones effectués sur le même handle de liaison, sur le même thread, au même niveau de sécurité, sont distribués dans l’ordre dans lequel ils ont été effectués. L’exécution réelle des appels peut se produire dans le désordre.
  • Comme pour les appels synchrones, les appels de procédure distante asynchrone provenant de différents threads clients s’exécutent simultanément.
  • Si un appel asynchrone d’une application cliente est suivi d’un ou plusieurs appels synchrones, l’appel asynchrone peut s’exécuter pendant l’exécution des appels synchrones. Quelle que soit la status de l’appel asynchrone, les appels synchrones sont exécutés dans l’ordre dans lequel ils sont reçus par le serveur.
  • Si une application cliente sélectionne l’ordre noncausal pour un handle de liaison particulier, elle désactive la sérialisation pour ce handle. Les applications activent l’ordre non décausal en appelant RpcBindingSetOption avec le paramètre Option défini sur RPC_C_OPT_BINDING_NONCAUSAL et le paramètre OptionValue défini sur TRUE. Pour plus d’informations, consultez Constantes d’option de liaison.