Поделиться через


Причинно-следственный порядок асинхронных вызовов

В асинхронном приложении RPC клиентский поток может выполнить второй асинхронный вызов дескриптора привязки до завершения предыдущего вызова этого дескриптора. Библиотека времени выполнения RPC обрабатывает эту ситуацию следующим образом:

  • Асинхронный механизм RPC гарантирует, что асинхронные вызовы, выполненные с тем же дескриптором привязки в том же потоке на том же уровне безопасности, отправляются в том же порядке, в который они были выполнены. Фактическое выполнение вызовов может происходить не по порядку.
  • Как и в случае с синхронными вызовами, асинхронные удаленные вызовы процедур из разных клиентских потоков выполняются одновременно.
  • Если за асинхронным вызовом из клиентского приложения следует один или несколько синхронных вызовов, асинхронный вызов может выполняться во время выполнения синхронных вызовов. Независимо от состояния асинхронного вызова синхронные вызовы выполняются в том порядке, в котором они принимаются сервером.
  • Если клиентское приложение выбирает неказальное упорядочение для определенного дескриптора привязки, оно отключает сериализацию для этого дескриптора. Приложения обеспечивают некаузальное упорядочение, вызывая RpcBindingSetOption с параметром Option , равным RPC_C_OPT_BINDING_NONCAUSAL, а для параметра OptionValue — значение TRUE. Дополнительные сведения см. в разделе Привязка констант параметров.