Compartir a través de


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:

[Ir al principio]

Vea también

Referencia

send (Función)

asend (Función)

receive (Función)

try_receive (Función)

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.