Funciones que pasan mensajes
La biblioteca de agentes asincrónicos proporciona varias funciones que permiten pasar mensajes entre componentes.
Estas funciones de paso de mensajes se usan con los distintos tipos de bloque de mensajes. Para más información sobre los tipos de bloque de mensajes definidos por el Runtime de simultaneidad, consulte Bloques de mensajes asincrónicos.
Secciones
En este tema se describen las siguientes funciones de paso de mensajes:
send y asend
La función concurrency::send envía un mensaje al destino especificado de forma sincrónica y la función concurrency::asend lo envía al especificado de forma asincrónica. Las funciones send
y asend
esperan hasta que el destino indica que finalmente aceptará o rechazará el mensaje.
La función send
espera hasta que el destino acepte o rechace el mensaje antes de que se devuelva. La función send
devuelve true
si el mensaje se entregó y false
en caso contrario. Dado que la función send
funciona de forma sincrónica, la función send
espera a que el destino reciba el mensaje antes de que se devuelva.
Por el contrario, la función asend
no espera a que el destino acepte o rechace el mensaje antes de que se devuelva. En su lugar, la función asend
devuelve true
si el destino acepta el mensaje y finalmente lo toma. De lo contrario, asend
devuelve false
para indicar que el destino rechazó el mensaje o pospuso la decisión sobre si se debe aceptar el mensaje.
[Arriba]
receive y try_receive
Las funciones concurrency::receive y concurrency::try_receive leen datos de un origen determinado. La función receive
espera a que los datos estén disponibles, mientras que la función try_receive
vuelve 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 que usan las funciones send
, asend
y receive
, consulte los temas siguientes:
Procedimiento para implementar varios modelos productor-consumidor
Procedimiento para proporcionar funciones de trabajo a las clases call y transformer
Procedimiento para usar la clase transformer en una canalización de datos
Procedimiento para enviar un mensaje a intervalos periódicos
[Arriba]
Consulte también
Biblioteca de agentes asincrónicos
Bloques de mensajes asincrónicos
send (función)
asend (función)
Función receive
función try_receive