Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un join blocco della messaggistica è un propagator_block a destinazione singola, multi-origine, che combina insieme messaggi di tipo T da ciascuna delle sue origini.
Sintassi
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>>>;
Parametri
T
Tipo di payload dei messaggi aggiunti e propagati dal blocco.
_Jtype
Il tipo di blocco join è, o greedy o non_greedy
Membri
Costruttori pubblici
| Nome | Descrizione |
|---|---|
| join | Sovraccarico. Costruisce un blocco di messaggistica join. |
| Distruttore di ~join | Distrugge il join blocco. |
Metodi protetti
| Nome | Descrizione |
|---|---|
| accetta_messaggio | Accetta un messaggio offerto da questo join blocco di messaggistica, trasferendo la proprietà al chiamante. |
| consume_message | Utilizza un messaggio offerto in precedenza dal join blocco di messaggistica e riservato dalla destinazione, trasferendo la proprietà al chiamante. |
| link_target_notification | Callback che notifica che un nuovo target è stato collegato a questo blocco di messaggistica join. |
| propagate_message | Passa in modo asincrono un messaggio da un ISource blocco a questo join blocco di messaggistica. Viene richiamato dal propagate metodo , quando viene chiamato da un blocco di origine. |
| propaga_a_qualsiasi_destinazione | Costruisce un messaggio di output contenente un messaggio di input da ciascuna fonte quando tutte hanno propagato un messaggio. Invia questo messaggio di output a ognuna delle destinazioni. |
| release_message | Rilascia una precedente prenotazione di messaggi. (Sovrascrive source_block::release_message.) |
| messaggio_di_riserva | Riserva un messaggio offerto in precedenza da questo join blocco di messaggistica. Esegue l'operazione di override di source_block::reserve_message. |
| resume_propagation | Riprende la propagazione dopo il rilascio di una prenotazione. (Oltrepassa source_block::resume_propagation.) |
Osservazioni:
Per altre informazioni, vedere Blocchi di messaggi asincroni.
Gerarchia di ereditarietà
join
Requisiti
Intestazione: agents.h
Spazio dei nomi: Concurrency
accetta_messaggio
Accetta un messaggio offerto da questo join blocco di messaggistica, trasferendo la proprietà al chiamante.
virtual message<_OutputType>* accept_message(runtime_object_identity _MsgId);
Parametri
_MsgId
L'oggetto runtime_object_identity dell'offerta message.
Valore restituito
Puntatore all'oggetto message di cui il chiamante ha ora la proprietà.
consume_message
Utilizza un messaggio offerto in precedenza dal join blocco di messaggistica e riservato dalla destinazione, trasferendo la proprietà al chiamante.
virtual message<_OutputType>* consume_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Il runtime_object_identity dell'oggetto message che viene consumato.
Valore restituito
Puntatore all'oggetto message di cui il chiamante ha ora la proprietà.
Osservazioni:
Simile a accept, ma è sempre preceduto da una chiamata a reserve.
unire
Costruisce un blocco di messaggistica 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);
Parametri
_NumInputs
Numero di input consentiti da questo join blocco.
_Filtro
Funzione di filtro che determina se i messaggi offerti devono essere accettati.
_PScheduler
Oggetto Scheduler all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica join .
_PScheduleGroup
Oggetto ScheduleGroup all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica join . L'oggetto Scheduler utilizzato è implicito nel gruppo di pianificazione.
Osservazioni:
Se non si specificano i parametri _PScheduler o _PScheduleGroup , il runtime usa l'utilità di pianificazione predefinita.
Il tipo filter_method è un funtore con firma bool (T const &) che viene richiamato da questo join blocco di messaggistica per determinare se deve accettare o meno un messaggio offerto.
~unire
Distrugge il join blocco.
~join();
notifica_destinazione_link
Callback che notifica che un nuovo target è stato collegato a questo blocco di messaggistica join.
virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);
propaga_messaggio
Passa in modo asincrono un messaggio da un ISource blocco a questo join blocco di messaggistica. Viene richiamato dal propagate metodo , quando viene chiamato da un blocco di origine.
message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Parametri
_PMessage
Puntatore all'oggetto message.
_PSource
Puntatore al blocco sorgente che offre il messaggio.
Valore restituito
Un'indicazione dello stato del messaggio su ciò che il destinatario ha deciso di fare con il messaggio.
propagate_to_any_targets
Costruisce un messaggio di output contenente un messaggio di input da ciascuna fonte quando tutte hanno propagato un messaggio. Invia questo messaggio di output a ognuna delle destinazioni.
void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);
messaggio_di_rilascio
Rilascia una precedente prenotazione di messaggi.
virtual void release_message(runtime_object_identity _MsgId);
Parametri
_MsgId
runtime_object_identity dell'oggetto message che viene rilasciato.
messaggio_di_riserva
Riserva un messaggio offerto in precedenza da questo join blocco di messaggistica.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parametri
_MsgId
L'oggetto runtime_object_identity dell'offerta message.
Valore restituito
true se il messaggio è stato riservato correttamente, false in caso contrario.
Osservazioni:
Dopo che reserve è stato chiamato, se restituisce true, devono essere chiamati consume o release per prendere o rilasciare la proprietà del messaggio.
resume_propagation
Riprende la propagazione dopo il rilascio di una prenotazione.
virtual void resume_propagation();
Vedi anche
Spazio dei nomi concorrenza
Classe choice
Classe multitype_join