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 Concurrency::send envía un mensaje de forma sincrónica al destino especificado y la función Concurrency::asend envía un mensaje de forma asincrónica al destino especificado. 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.
[Ir al principio]
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 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.
[Ir al principio]
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
[Ir al principio]
Vea también
Referencia
Conceptos
Biblioteca de agentes asincrónicos
Bloques de mensajes asincrónicos
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
Marzo de 2011 |
Aclarada la diferencia entre las funciones send y asend. |
Comentarios de los clientes. |
Agosto de 2010 |
Agregados vínculos a los ejemplos. |
Mejora de la información. |