Fonctions de passage de messages
La Bibliothèque d'agents asynchrones fournit plusieurs fonctions qui vous permettent de passer des messages parmi des composants.
Ces fonctions de passage de messages sont utilisées avec les différents types de blocs de messages. Pour plus d'informations sur les types de blocs de messages définis par le runtime d'accès concurrentiel, consultez Blocs de messages asynchrones.
Sections
Cette rubrique décrit les fonctions de passage de messages suivantes :
send et asend
receive et try_receive
Exemples
send et asend
La fonction Concurrency::send envoie de façon synchrone un message à la cible spécifiée et la fonction Concurrency::asend envoie de façon asynchrone un message à la cible spécifiée. Les fonctions send et asend attendent toutes deux que la cible indique qu'elle accepte ou refuse le message.
La fonction send attend que la cible accepte ou refuse le message avant de retourner. La fonction send retourne true si le message a été remis et false dans le cas contraire. Étant donné que la fonction send opère de façon synchrone, la fonction send attend que la cible reçoive le message avant de retourner.
En revanche, la fonction asend n'attend pas que la cible accepte ou refuse le message avant de retourner une valeur. Au lieu de cela, la fonction asend retourne la valeur true si la cible accepte le message et le prendra finalement. Sinon, asend retourne la valeur false pour indiquer que la cible a refusé le message ou différé la décision relative à la prise du message.
[retour en haut]
receive et try_receive
Les fonctions Concurrency::receive et Concurrency::try_receive lisent des données à partir d'une source donnée. La fonction receive attend que les données deviennent disponibles, tandis que la fonction try_receive retourne immédiatement.
Utilisez la fonction receive lorsque vous devez avoir les données pour continuer. Utilisez la fonction try_receive si vous ne devez pas bloquer le contexte actuel ou si vous n'êtes pas obligé d'avoir les données pour continuer.
[retour en haut]
Exemples
Pour obtenir des exemples qui utilisent les fonctions send, asend et receive, consultez les rubriques suivantes :
Comment : implémenter divers modèles de producteur-consommateur
Comment : fournir des fonctions de travail aux classes call et transformer
Comment : utiliser la classe transformer dans un pipeline de données
Comment : effectuer une sélection parmi les tâches terminées
[retour en haut]
Voir aussi
Référence
Concepts
Bibliothèque d'agents asynchrones
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Mars 2011 |
Clarification de la différence entre les fonctions send et asend. |
Commentaires client. |
Août 2010 |
Ajout de liens vers des exemples. |
Améliorations apportées aux informations. |