Partilhar via


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.

[Parte superior]

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.

[Parte superior]

Exemplos

Para obter exemplos que usam as funções send, asend e receive, consulte os seguintes tópicos:

[Parte superior]

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