Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Un bloc de messagerie single_assignment est un propagator_block à cibles multiples, à sources multiples et ordonné, capable de stocker un message unique écrit une seule fois.
Syntaxe
template<class T>
class single_assignment : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;
Paramètres
T
Type de charge utile du message stocké et propagé par la mémoire tampon.
Membres
Constructeurs publics
| Nom | Description |
|---|---|
| single_assignment | Surcharge. Construit un bloc de messagerie single_assignment . |
| ~single_assignment Destructeur | Détruit le single_assignment bloc de messagerie. |
Méthodes publiques
| Nom | Description |
|---|---|
| has_value | Vérifie si ce single_assignment bloc de messagerie a été initialisé avec une valeur encore. |
| valeur | Obtient une référence à la charge utile actuelle du message stocké dans le single_assignment bloc de messagerie. |
Méthodes protégées
| Nom | Description |
|---|---|
| accept_message | Accepte un message proposé par ce single_assignment bloc de messagerie, renvoyant une copie du message à l’appelant. |
| consume_message | Consomme un message précédemment proposé par la single_assignment cible et réservé par la cible, renvoyant une copie du message à l’appelant. |
| link_target_notification | Rappel qui informe qu’une nouvelle cible a été liée à ce single_assignment bloc de messagerie. |
| propagate_message | Transmet de façon asynchrone un message d’un ISource bloc à ce single_assignment bloc de messagerie. Elle est appelée par la propagate méthode, lorsqu’elle est appelée par un bloc source. |
| propagate_to_any_targets | Place le message _PMessage bloc de messagerie dans ce single_assignment bloc de messagerie et l’offre à toutes les cibles liées. |
| release_message | Libère une réservation de message précédente. (Remplace source_block ::release_message.) |
| reserve_message | Réserve un message précédemment proposé par ce single_assignment bloc de messagerie. (Remplace source_block ::reserve_message.) |
| resume_propagation | Reprend la propagation après la publication d’une réservation. (Remplace source_block ::resume_propagation.) |
| send_message | Transmet de façon synchrone un message d’un ISource bloc à ce single_assignment bloc de messagerie. Elle est appelée par la send méthode, lorsqu’elle est appelée par un bloc source. |
Notes
Un single_assignment bloc de messagerie propage des copies de son message à chaque cible.
Pour plus d’informations, consultez Blocs de messages asynchrones.
Hiérarchie d'héritage
single_assignment
Spécifications
En-tête : agents.h
Espace de noms : concurrency
accept_message
Accepte un message proposé par ce single_assignment bloc de messagerie, renvoyant une copie du message à l’appelant.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Paramètres
_MsgId
Objet runtime_object_identity proposé message .
Valeur de retour
Pointeur vers l’objet message dont l’appelant a désormais la propriété.
Notes
Le single_assignment bloc de messagerie retourne des copies du message à ses cibles, plutôt que de transférer la propriété du message actuellement conservé.
consume_message
Consomme un message précédemment proposé par la single_assignment cible et réservé par la cible, renvoyant une copie du message à l’appelant.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Paramètres
_MsgId
De runtime_object_identity l’objet message consommé.
Valeur de retour
Pointeur vers l’objet message dont l’appelant a désormais la propriété.
Notes
Similaire à accept, mais est toujours précédé d’un appel à reserve.
has_value
Vérifie si ce single_assignment bloc de messagerie a été initialisé avec une valeur encore.
bool has_value() const;
Valeur de retour
true si le bloc a reçu une valeur, false sinon.
link_target_notification
Rappel qui informe qu’une nouvelle cible a été liée à ce single_assignment bloc de messagerie.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Paramètres
_PTarget
Pointeur vers la cible nouvellement liée.
propagate_message
Transmet de façon asynchrone un message d’un ISource bloc à ce single_assignment bloc de messagerie. Elle est appelée par la propagate méthode, lorsqu’elle est appelée par un bloc source.
virtual message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Paramètres
_PMessage
Pointeur vers l'objet message.
_PSource
Pointeur vers le bloc source offrant le message.
Valeur de retour
Une message_status indication de ce que la cible a décidé de faire avec le message.
propagate_to_any_targets
Place le message _PMessage bloc de messagerie dans ce single_assignment bloc de messagerie et l’offre à toutes les cibles liées.
virtual void propagate_to_any_targets(_Inout_opt_ message<T>* _PMessage);
Paramètres
_PMessage
Pointeur vers un pointeur vers lequel message ce single_assignment bloc de messagerie a pris possession.
release_message
Libère une réservation de message précédente.
virtual void release_message(runtime_object_identity _MsgId);
Paramètres
_MsgId
De runtime_object_identity l’objet message libéré.
reserve_message
Réserve un message précédemment proposé par ce single_assignment bloc de messagerie.
virtual bool reserve_message(runtime_object_identity _MsgId);
Paramètres
_MsgId
De runtime_object_identity l’objet message réservé.
Valeur de retour
true si le message a été correctement réservé, false sinon.
Notes
Une fois reserve appelé, s’il retourne true, soit release consume doit être appelé pour prendre ou libérer la propriété du message.
resume_propagation
Reprend la propagation après la publication d’une réservation.
virtual void resume_propagation();
send_message
Transmet de façon synchrone un message d’un ISource bloc à ce single_assignment bloc de messagerie. Elle est appelée par la send méthode, lorsqu’elle est appelée par un bloc source.
virtual message_status send_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Paramètres
_PMessage
Pointeur vers l'objet message.
_PSource
Pointeur vers le bloc source offrant le message.
Valeur de retour
Une message_status indication de ce que la cible a décidé de faire avec le message.
single_assignment
Construit un bloc de messagerie single_assignment .
single_assignment();
single_assignment(
filter_method const& _Filter);
single_assignment(
Scheduler& _PScheduler);
single_assignment(
Scheduler& _PScheduler,
filter_method const& _Filter);
single_assignment(
ScheduleGroup& _PScheduleGroup);
single_assignment(
ScheduleGroup& _PScheduleGroup,
filter_method const& _Filter);
Paramètres
_Filtre
Fonction de filtre qui détermine si les messages proposés doivent être acceptés.
_PScheduler
Objet Scheduler dans lequel la tâche de propagation du bloc de messagerie single_assignment est planifiée.
_PScheduleGroup
Objet ScheduleGroup dans lequel la tâche de propagation du bloc de messagerie single_assignment est planifiée. L’objet Scheduler utilisé est suggéré par le groupe de planification.
Notes
Le runtime utilise le planificateur par défaut si vous ne spécifiez pas les paramètres _PScheduler ou _PScheduleGroup .
Le type filter_method est un fonctor avec signature bool (T const &) qui est appelé par ce single_assignment bloc de messagerie pour déterminer s’il doit accepter ou non un message proposé.
~single_assignment
Détruit le single_assignment bloc de messagerie.
~single_assignment();
valeur
Obtient une référence à la charge utile actuelle du message stocké dans le single_assignment bloc de messagerie.
T const& value();
Valeur de retour
Charge utile du message stocké.
Notes
Cette méthode attend qu’un message arrive si aucun message n’est actuellement stocké dans le bloc de single_assignment messagerie.
Voir aussi
accès concurrentiel Namespace
overwrite_buffer, classe
Classe unbounded_buffer