Classe join

Un blocco della messaggistica join è un propagator_block multi-origine, a destinazione singola, che combina insieme messaggi di tipo _Type da ognuna delle origini.

template<
   class _Type,
   join_type _Jtype = non_greedy
>
class join : public propagator_block<single_link_registry<ITarget<std::vector<_Type>>>, multi_link_registry<ISource<_Type>>>;

Parametri

  • _Type
    Tipo di payload dei messaggi uniti e propagati dal blocco.

  • _Jtype
    Il tipo di blocco join è greedy o non_greedy

Membri

Costruttori pubblici

Nome

Oggetto di descrizione

Costruttore join::join

Metodo di overload. Costruisce un blocco della messaggistica join.

Distruttore join::~join

Elimina il blocco join.

Metodi protetti

Nome

Oggetto di descrizione

Metodo join::accept_message

Accetta un messaggio offerto dal blocco di messaggistica join, trasferendo la proprietà al chiamante.

Metodo join::consume_message

Utilizza un messaggio precedentemente offerto dal blocco di messaggistica join e riservato dalla destinazione trasferendo la proprietà al chiamante.

Metodo join::link_target_notification

Un callback che notifica che una nuova destinazione è stata collegata a questo blocco della messaggistica join.

Metodo join::propagate_message

Consente di passare in modo asincrono un messaggio da un blocco ISource a quello della messaggistica join. Viene richiamato dal metodo propagate se chiamato da un blocco di origine.

Metodo join::propagate_to_any_targets

Costruisce un messaggio di output che contiene un messaggio di input da ogni origine quando tutti hanno propagato un messaggio. Consente di inviare tale messaggio di output a ciascuna delle sue destinazioni.

Metodo join::release_message

Consente di rilasciare una prenotazione del messaggio precedente. (Consente di eseguire l'override di source_block::release_message.)

Metodo join::reserve_message

Consente di riservare un messaggio messo a disposizione in precedenza da tale blocco della messaggistica join. (Consente di eseguire l'override source_block::reserve_message.)

Metodo join::resume_propagation

Consente di riprendere una propagazione dopo il rilascio di una prenotazione. (Consente di eseguire l'override source_block::resume_propagation.)

Note

Per ulteriori informazioni, vedere Blocchi dei messaggi asincroni.

Gerarchia di ereditarietà

ISource

source_block

ITarget

propagator_block

join

Requisiti

Header: agents.h

Spazio dei nomi: Concurrency

Vedere anche

Riferimenti

Spazio dei nomi Concurrency

Classe choice

Classe multitype_join

Enumerazione join_type