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