Funzioni di passaggio dei messaggi

La libreria di agenti asincroni fornisce diverse funzioni che consentono di passare i messaggi tra i componenti.

Queste funzioni di passaggio dei messaggi vengono utilizzate con vari tipi di blocco dei messaggi. Per ulteriori informazioni sui tipi di blocco dei messaggi definiti dal runtime di concorrenza, vedere Blocchi dei messaggi asincroni.

Sezioni

In questo argomento vengono descritte le funzioni di passaggio dei messaggi seguenti:

  • send e asend

  • receive e try_receive

  • Esempi

send e asend

La funzione Concurrency::send invia un messaggio alla destinazione specificata in modo sincrono, mentre la funzione Concurrency::asend invia un messaggio alla destinazione specificata in modo asincrono. Entrambe le funzioni send e asend attendono finché la destinazione non indica l'accettazione o il rifiuto del messaggio.

La funzione di send attende finché la destinazione non accetta o rifiuta il messaggio prima di restituire un valore. La funzione send restituisce true se il messaggio è stato recapito; in caso contrario, false. Poiché la funzione send viene utilizzata in modo sincrono, la funzione send attende la ricezione del messaggio da parte della destinazione prima di restituire un valore.

Al contrario, la funzione asend non attende l'accettazione o il rifiuto del messaggio da parte della destinazione prima di restituire un valore. La funzione asend restituisce invece true se la destinazione accetta il messaggio; in caso contrario, asend restituisce false per indicare che la destinazione ha rifiutato il messaggio o ha posticipato la decisione sull'accettazione del messaggio.

[vai all'inizio]

receive e try_receive

Le funzioni Concurrency::receive e Concurrency::try_receive leggono i dati da un'origine specificata. La funzione receive attende che i dati diventino disponibili, mentre la funzione try_receive restituisce immediatamente un valore.

Utilizzare la funzione receive quando è necessario avere i dati per continuare. Utilizzare la funzione try_receive se non è necessario bloccare il contesto corrente o non è necessario avere i dati per continuare.

[vai all'inizio]

Esempi

Per gli esempi in cui vengono utilizzate le funzioni send, asend e receive vedere gli argomenti seguenti:

[vai all'inizio]

Vedere anche

Riferimenti

Funzione send

Funzione asend

Funzione receive

Funzione try_receive

Concetti

Libreria di agenti asincroni

Blocchi dei messaggi asincroni

Cronologia delle modifiche

Data

Cronologia

Motivo

Marzo 2011

Aggiunta di un chiarimento per spiegare la differenza tra le funzioni send e asend.

Commenti e suggerimenti dei clienti.

Agosto 2010

Aggiunta di collegamenti agli esempi.

Miglioramento delle informazioni.