Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un bloc de messagerie join est un propagator_block à cible unique, à sources multiples et ordonné qui combine des messages de type T en provenance de chacune de ses sources.
Syntaxe
template<class T,
join_type _Jtype = non_greedy>
class join : public propagator_block<single_link_registry<ITarget<std::vector<T>>>,
multi_link_registry<ISource<T>>>;
Paramètres
T
Type de charge utile des messages joints et propagés par le bloc.
_Jtype
Le type de join bloc est, soit, soit greedynon_greedy
Membres
Constructeurs publics
| Nom | Description |
|---|---|
| join | Surcharge. Construit un bloc de messagerie join . |
| ~join Destructor | Détruit le join bloc. |
Méthodes protégées
| Nom | Description |
|---|---|
| accept_message | Accepte un message proposé par ce join bloc de messagerie, en transférant la propriété à l’appelant. |
| consume_message | Consomme un message précédemment proposé par le join bloc de messagerie et réservé par la cible, en transférant la propriété à l’appelant. |
| link_target_notification | Rappel qui informe qu’une nouvelle cible a été liée à ce join bloc de messagerie. |
| propagate_message | Transmet de façon asynchrone un message d’un ISource bloc à ce join 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 | Construit un message de sortie contenant un message d’entrée à partir de chaque source lorsqu’il a tous propagé un message. Envoie ce message de sortie à chacune de ses cibles. |
| 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 join 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.) |
Notes
Pour plus d’informations, consultez Blocs de messages asynchrones.
Hiérarchie d'héritage
join
Spécifications
En-tête : agents.h
Espace de noms : concurrency
accept_message
Accepte un message proposé par ce join bloc de messagerie, en transférant la propriété à l’appelant.
virtual message<_OutputType>* 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é.
consume_message
Consomme un message précédemment proposé par le join bloc de messagerie et réservé par la cible, en transférant la propriété à l’appelant.
virtual message<_OutputType>* 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.
join
Construit un bloc de messagerie join .
join(
size_t _NumInputs);
join(
size_t _NumInputs,
filter_method const& _Filter);
join(
Scheduler& _PScheduler,
size_t _NumInputs);
join(
Scheduler& _PScheduler,
size_t _NumInputs,
filter_method const& _Filter);
join(
ScheduleGroup& _PScheduleGroup,
size_t _NumInputs);
join(
ScheduleGroup& _PScheduleGroup,
size_t _NumInputs,
filter_method const& _Filter);
Paramètres
_NumInputs
Nombre d’entrées autorisées par ce join bloc.
_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 join est planifiée.
_PScheduleGroup
Objet ScheduleGroup dans lequel la tâche de propagation du bloc de messagerie join 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 join bloc de messagerie pour déterminer s’il doit accepter ou non un message proposé.
~unir
Détruit le join bloc.
~join();
link_target_notification
Rappel qui informe qu’une nouvelle cible a été liée à ce join bloc de messagerie.
virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);
propagate_message
Transmet de façon asynchrone un message d’un ISource bloc à ce join bloc de messagerie. Elle est appelée par la propagate méthode, lorsqu’elle est appelée par un bloc source.
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
Construit un message de sortie contenant un message d’entrée à partir de chaque source lorsqu’il a tous propagé un message. Envoie ce message de sortie à chacune de ses cibles.
void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);
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 join bloc de messagerie.
virtual bool reserve_message(runtime_object_identity _MsgId);
Paramètres
_MsgId
Objet runtime_object_identity proposé message .
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();
Voir aussi
accès concurrentiel Namespace
choice, classe
multitype_join, classe