Compartir a través de


unirse a la clase

Un bloque de mensajería join es un bloque propagator_block de destino único y de varios orígenes ordenado, que combina los mensajes de tipo T de cada uno de sus orígenes.

Sintaxis

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

Parámetros

T
Tipo de carga de los mensajes unidos y propagados por el bloque.

_Jtype
El tipo de bloque join: greedy o non_greedy.

Miembros

Constructores públicos

Nombre Descripción
join Sobrecargado Construye un bloque de mensajería join .
~join Destructor Destruye el bloque join.

Métodos protegidos

Nombre Descripción
aceptar_mensaje Acepta un mensaje ofrecido por este bloque de mensajería join y transfiere la propiedad al autor de la llamada.
consume_message Consume un mensaje ofrecido previamente por el bloque de mensajería join y reservado por el destino, y transfiere la propiedad al autor de la llamada.
link_target_notification Callback que notifica que un nuevo destino ha sido vinculado a este bloque de mensajería join.
propagate_message Pasa de forma asincrónica un mensaje de un bloque ISource a este bloque de mensajería join. Se invoca mediante el propagate método, cuando lo llama un bloque de origen.
propagar_a_cualquier_objetivo Construye un mensaje de salida que contiene un mensaje de entrada de cada origen cuando todos han propagado un mensaje. Envía este mensaje de salida a cada uno de sus destinos.
release_message Libera una reserva previa de mensaje. (Invalida source_block::release_message).
mensaje_de_reserva Reserva un mensaje ofrecido anteriormente por este bloque de mensajería join. (Invalida source_block::reserve_message).
resume_propagation Reanuda la propagación después de que se haya liberado una reserva. (Invalida source_block::resume_propagation).

Comentarios

Para obtener más información, consulte Bloques de mensajes asincrónicos.

Jerarquía de herencia

ISource

ITarget

source_block

propagator_block

join

Requisitos

Encabezado: agents.h

Espacio de nombres: simultaneidad

mensaje_de_aceptación

Acepta un mensaje ofrecido por este bloque de mensajería join y transfiere la propiedad al autor de la llamada.

virtual message<_OutputType>* accept_message(runtime_object_identity _MsgId);

Parámetros

_MsgId
El valor runtime_object_identity del objeto message ofrecido.

Valor devuelto

Puntero al objeto message del que el autor de la llamada tiene ahora la propiedad.

consumir_mensaje

Consume un mensaje ofrecido previamente por el bloque de mensajería join y reservado por el destino, y transfiere la propiedad al autor de la llamada.

virtual message<_OutputType>* consume_message(runtime_object_identity _MsgId);

Parámetros

_MsgId
Valor runtime_object_identity del objeto message que se consumirá.

Valor devuelto

Puntero al objeto message del que el autor de la llamada tiene ahora la propiedad.

Comentarios

Es similar a accept, pero siempre va precedido de una llamada a reserve.

unir

Construye un bloque de mensajería 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);

Parámetros

_NumInputs
El número de entradas que se permitirá para este bloque join.

_Filter
Función de filtro que determina si se deben aceptar los mensajes ofrecidos.

_PScheduler
El objeto Scheduler dentro del que se programa la tarea de propagación para el bloque de mensajería join .

_PScheduleGroup
El objeto ScheduleGroup dentro del que se programa la tarea de propagación para el bloque de mensajería join . El objeto Scheduler utilizado está implícito en el grupo de tareas.

Comentarios

El runtime usa el programador predeterminado si no se especifican los parámetros _PScheduler o _PScheduleGroup .

El tipo filter_method es un functor con firma bool (T const &) invocada por este bloque de mensajería join para determinar si debe aceptar o no un mensaje ofrecido.

~unir

Destruye el bloque join.

~join();

Callback que notifica que un nuevo destino ha sido vinculado a este bloque de mensajería join.

virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);

propagar_mensaje

Pasa de forma asincrónica un mensaje de un bloque ISource a este bloque de mensajería join. Se invoca mediante el propagate método, cuando lo llama un bloque de origen.

message_status propagate_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

Parámetros

_PMessage
Un puntero al objeto message.

_PSource
Puntero al bloque de origen que ofrece el mensaje.

Valor devuelto

Una indicación message_status de lo que el destino decidió hacer con el mensaje.

propagar_a_cualquier_destino

Construye un mensaje de salida que contiene un mensaje de entrada de cada origen cuando todos han propagado un mensaje. Envía este mensaje de salida a cada uno de sus destinos.

void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);

mensaje_de_lanzamiento

Libera una reserva previa de mensaje.

virtual void release_message(runtime_object_identity _MsgId);

Parámetros

_MsgId
El valor runtime_object_identity del objeto message que se libera.

reserve_message

Reserva un mensaje ofrecido anteriormente por este bloque de mensajería join.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parámetros

_MsgId
El valor runtime_object_identity del objeto message ofrecido.

Valor devuelto

true si se ha reservado correctamente el mensaje; de lo contrario, false.

Comentarios

Después de llamar a reserve, si devuelve true, se debe llamar a consume o release para aceptar o liberar la propiedad del mensaje.

resume_propagation

Reanuda la propagación después de que se haya liberado una reserva.

virtual void resume_propagation();

Consulte también

espacio de nombres de concurrencia
Clase Choice
Clase multitype_join