Partager via


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

ISource

ITarget

source_block

propagator_block

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.

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_bufferpropagation 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