Funzioni di passaggio dei messaggi
La libreria degli agenti asincroni fornisce diverse funzioni che consentono di passare messaggi tra i componenti.
Queste funzioni di passaggio di messaggi vengono usate con i vari tipi di blocco di messaggi. Per altre informazioni sui tipi di blocco di messaggi definiti dal runtime di concorrenza, vedere Blocchi messaggi asincroni.
Sezioni
In questo argomento vengono descritte le funzioni di passaggio dei messaggi seguenti:
send and asend
La funzione concurrency::send invia un messaggio alla destinazione specificata in modo sincrono e la funzione concurrency::asend invia un messaggio alla destinazione specificata in modo asincrono. Entrambe le send
funzioni e asend
attendono fino a quando la destinazione non indica che accetterà o rifiuta il messaggio.
La send
funzione attende fino a quando la destinazione non accetta o rifiuta il messaggio prima che venga restituito. La send
funzione restituisce true
se il messaggio è stato recapitato e false
in caso contrario. Poiché la send
funzione funziona in modo sincrono, la send
funzione attende che la destinazione riceva il messaggio prima che venga restituito.
Al contrario, la asend
funzione non attende che la destinazione accetti o rifiuta il messaggio prima che venga restituito. La funzione restituisce asend
true
invece se la destinazione accetta il messaggio e la accetta. In caso contrario, restituisce asend
false
per indicare che la destinazione ha rifiutato il messaggio o ha posticipato la decisione su se accettare il messaggio.
ricevere e try_receive
Le funzioni concurrency::receive e concurrency::try_receive leggono i dati da una determinata origine. La receive
funzione attende che i dati diventino disponibili, mentre la try_receive
funzione restituisce immediatamente.
Usare la receive
funzione quando è necessario disporre dei dati per continuare. Usare la try_receive
funzione se non è necessario bloccare il contesto corrente o non è necessario che i dati continuino.
Esempi
Per esempi che usano le send
funzioni e asend
e receive
, vedere gli argomenti seguenti:
Procedura: Fornire funzioni lavoro alle classi call e transformer
Procedura: Usare la classe transformer in una pipeline di dati
Vedi anche
Libreria di agenti asincroni
Blocchi dei messaggi asincroni
Funzione send
Funzione asend
Funzione receive
Funzione try_receive