Classe unbounded_buffer
Un bloc de messagerie unbounded_buffer
est un propagator_block
à cibles multiples, à sources multiples et ordonné, capable de stocker un nombre illimité de messages.
Syntaxe
template<
class _Type
>
class unbounded_buffer : public propagator_block<multi_link_registry<ITarget< _Type>>, multi_link_registry<ISource< _Type>>>;
Paramètres
_Type
Type de charge utile des messages stockés et propagés par la mémoire tampon.
Membres
Constructeurs publics
Nom | Description |
---|---|
unbounded_buffer | Surcharge. Construit un unbounded_buffer bloc de messagerie. |
~unbounded_buffer Destructeur | Détruit le unbounded_buffer bloc de messagerie. |
Méthodes publiques
Nom | Description |
---|---|
dequeue | Supprime un élément du unbounded_buffer bloc de messagerie. |
Enqueue | Ajoute un élément au unbounded_buffer bloc de messagerie. |
Méthodes protégées
Nom | Description |
---|---|
accept_message | Accepte un message proposé par ce unbounded_buffer bloc de messagerie, en transférant la propriété à l’appelant. |
consume_message | Consomme un message précédemment proposé par le unbounded_buffer 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 unbounded_buffer bloc de messagerie. |
process_input_messages | Place le message _PMessage bloc de messagerie dans ce unbounded_buffer bloc de messagerie et tente de l’offrir à toutes les cibles liées. |
propagate_message | Transmet de façon asynchrone un message d’un ISource bloc à ce unbounded_buffer bloc de messagerie. Elle est appelée par la propagate méthode, lorsqu’elle est appelée par un bloc source. |
propagate_output_messages | Place le message _PMessage bloc de messagerie dans ce unbounded_buffer bloc de messagerie et tente de l’offrir à toutes les cibles liées. (Remplace source_block ::p ropagate_output_messages.) |
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 unbounded_buffer 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 unbounded_buffer bloc de messagerie. Elle est appelée par la send méthode, lorsqu’elle est appelée par un bloc source. |
supports_anonymous_source | Remplace la supports_anonymous_source méthode pour indiquer que ce bloc peut accepter les messages proposés par une source qui n’est pas liée. (Remplacements ITarget ::supports_anonymous_source.) |
Pour plus d’informations, consultez Blocs de messages asynchrones.
Hiérarchie d'héritage
unbounded_buffer
Spécifications
En-tête : agents.h
Espace de noms : concurrency
accept_message
Accepte un message proposé par ce unbounded_buffer
bloc de messagerie, en transférant la propriété à l’appelant.
virtual message<_Type> * 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 unbounded_buffer
bloc de messagerie et réservé par la cible, en transférant la propriété à l’appelant.
virtual message<_Type> * 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
.
enlever de la file d'attente
Supprime un élément du unbounded_buffer
bloc de messagerie.
_Type dequeue();
Valeur de retour
Charge utile du message supprimé du unbounded_buffer
.
empiler
Ajoute un élément au unbounded_buffer
bloc de messagerie.
bool enqueue(
_Type const& _Item
);
Paramètres
_Article
Élément à ajouter.
Valeur de retour
true
si l’élément a été accepté, false
sinon.
link_target_notification
Rappel qui informe qu’une nouvelle cible a été liée à ce unbounded_buffer
bloc de messagerie.
virtual void link_target_notification(
_Inout_ ITarget<_Type> * _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 unbounded_buffer
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<_Type> * _PMessage,
_Inout_ ISource<_Type> * _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_output_messages
Place le message
_PMessage
bloc de messagerie dans ce unbounded_buffer
bloc de messagerie et tente de l’offrir à toutes les cibles liées.
virtual void propagate_output_messages();
Notes
Si un autre message est déjà en avance sur celui-ci, la unbounded_buffer
propagation vers des cibles liées ne se produit pas tant que les messages antérieurs n’ont pas été acceptés ou consommés. La première cible liée à la réussite accept
ou consume
le message prend possession, et aucune autre cible ne peut ensuite obtenir le message.
process_input_messages
Place le message
_PMessage
bloc de messagerie dans ce unbounded_buffer
bloc de messagerie et tente de l’offrir à toutes les cibles liées.
virtual void process_input_messages(
_Inout_ message<_Type> * _PMessage
);
Paramètres
_PMessage
Pointeur vers le message à traiter.
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 unbounded_buffer
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 unbounded_buffer
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<_Type> * _PMessage,
_Inout_ ISource<_Type> * _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.
supports_anonymous_source
Remplace la supports_anonymous_source
méthode pour indiquer que ce bloc peut accepter les messages proposés par une source qui n’est pas liée.
virtual bool supports_anonymous_source();
Valeur de retour
true
car le bloc ne reporte pas les messages proposés.
unbounded_buffer
Construit un unbounded_buffer
bloc de messagerie.
unbounded_buffer();
unbounded_buffer(
filter_method const& _Filter
);
unbounded_buffer(
Scheduler& _PScheduler
);
unbounded_buffer(
Scheduler& _PScheduler,
filter_method const& _Filter
);
unbounded_buffer(
ScheduleGroup& _PScheduleGroup
);
unbounded_buffer(
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 unbounded_buffer
est planifiée.
_PScheduleGroup
Objet ScheduleGroup
dans lequel la tâche de propagation du bloc de messagerie unbounded_buffer
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 (_Type const &)
qui est appelé par ce unbounded_buffer
bloc de messagerie pour déterminer s’il doit accepter ou non un message proposé.
~unbounded_buffer
Détruit le unbounded_buffer
bloc de messagerie.
~unbounded_buffer();
Voir aussi
accès concurrentiel Namespace
overwrite_buffer, classe
single_assignment, classe