Funciones que pasan mensajes
La Biblioteca de agentes asincrónicos proporciona varias funciones que permiten pasar mensajes entre los componentes.
Estas funciones para pasar mensajes se usan con los distintos tipos de bloques de mensajes. Para obtener más información sobre los tipos de bloques de mensajes definidos por el Runtime de simultaneidad, vea Bloques de mensajes asincrónicos.
Secciones
En este tema se describen las siguientes funciones para pasar mensajes:
send y asend
receive y try_receive
Ejemplos
send y asend
La función de concurrency::send envía un mensaje al destino especificado sincrónicamente y la función de concurrency::asend envía un mensaje al destino especificado de forma asincrónica. Las funciones send y asend esperan hasta que el destino indica que aceptará o rechazará finalmente el mensaje.
La función send espera a que el destino acepte o rechace el mensaje antes de regresar. La función send devuelve true si se entrega el mensaje; en caso contrario, devuelve false. Dado que la función send funciona de manera sincrónica, la función send espera a que el destino reciba el mensaje antes de regresar.
Por el contrario, la función asend no espera a que el destino acepte o rechace el mensaje antes de regresar. En su lugar, la función asend devuelve true si el destino acepta el mensaje y lo toma en última instancia. De lo contrario, asend devuelve false para indicar que el destino rechazó el mensaje o pospuso la decisión de tomarlo.
[Arriba]
receive y try_receive
concurrency::receive y concurrency::try_receive funciona leer los datos de un origen determinado. La función receive espera a que los datos estén disponibles, mientras que la función try_receive regresa inmediatamente.
Use la función receive cuando deba tener los datos para continuar. Use la función try_receive si no debe bloquear el contexto actual o no tiene que tener los datos para continuar.
[Arriba]
Ejemplos
Para obtener ejemplos en los que se usan las funciones send, asend y receive, vea los temas siguientes:
Cómo: Proporcionar funciones de trabajo a las clases call y transformer
Cómo: Usar la clase transformer en una canalización de datos
[Arriba]