Funções de transmissão de mensagem
A Biblioteca de Agentes Assíncronos fornece várias funções que permitem passar mensagens entre componentes.
Essas funções de passagem de mensagem são usadas com os vários tipos de bloco de mensagens. Para obter mais informações sobre os tipos de bloco de mensagens definidos pelo Runtime de Simultaneidade, consulte Blocos de Mensagens Assíncronos.
Seções
Este tópico descreve as seguintes funções de passagem de mensagem:
enviar e asend
A função concurrency::send envia uma mensagem para o destino especificado de forma síncrona e a função concurrency::asend envia uma mensagem para o destino especificado de forma assíncrona. As funções send
e asend
esperam até que o destino indique que ele eventualmente aceitará ou recusará a mensagem.
A função send
aguarda até que o destino aceite ou recuse a mensagem antes de retornar. A função send
retornará true
se a mensagem foi entregue e false
de outra forma. Como a função send
funciona de forma síncrona, a função send
aguarda o destino receber a mensagem antes de retornar.
Por outro lado, a função asend
não espera que o destino aceite ou recuse a mensagem antes de retornar. Em vez disso, a função asend
retornará true
se o destino aceitar a mensagem e, eventualmente, a levará. Caso contrário, asend
retorna false
para indicar que o destino recusou a mensagem ou adiou a decisão sobre a possibilidade de levar a mensagem.
receber e try_receive
As funções concurrency::receive e concurrency::try_receive leem dados de uma determinada fonte. A função receive
aguarda que os dados fiquem disponíveis, enquanto a função try_receive
retorna imediatamente.
Use a função receive
quando precisar ter os dados para continuar. Use a função try_receive
se você não precisar bloquear o contexto atual ou não precisar ter os dados para continuar.
Exemplos
Para obter exemplos que usam as funções send
, asend
e receive
, consulte os seguintes tópicos:
Confira também
Biblioteca de agentes assíncronos
Blocos de mensagens assíncronos
Função de envio
Função asend
Função de recebimento
try_receive Function