Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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