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
Il concurrency::send funzione Invia un messaggio alla destinazione specificata in modo sincrono e il concurrency::asend funzione 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.
Top
receive e try_receive
Il concurrency::receive e concurrency::try_receive funzioni di leggere i dati da una determinata origine.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.
Top
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
Top