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:
Procedura: fornire funzioni lavoro alle classi call e transformer
Procedura: Utilizzare la classe transformer in una pipeline di dati
[vai all'inizio]
Vedere anche
Riferimenti
Concetti
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. |