Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
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 | Con sobrecarga. Construye un bloque de mensajería join . |
| Destructor ~join | Destruye el bloque join. |
Métodos protegidos
| Nombre | Descripción |
|---|---|
| accept_message | 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 | Devolución de llamada que notifica que se ha vinculado un nuevo destino 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. |
| propagate_to_any_targets | 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 de mensajes anterior. (Invalida source_block::release_message). |
| reserve_message | 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
accept_message
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.
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.
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.
join
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 de este bloque join que se permitirán.
_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 programación.
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.
~juntar
Destruye el bloque join.
~join();
link_target_notification
Devolución de llamada que notifica que se ha vinculado un nuevo destino a este bloque de mensajería join.
virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);
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.
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.
propagate_to_any_targets
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> *);
release_message
Libera una reserva de mensajes anterior.
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
concurrency (espacio de nombres)
choice (clase)
multitype_join (clase)