Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
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();
notificación_de_destino_de_enlace
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