Classe multitype_join
Un blocco della messaggistica multitype_join
è un blocco multi-origine, a destinazione singola, che combina messaggi di diverso tipo da ciascuna delle sue origini e offre una tupla dei messaggi combinati alle sue destinazioni.
Sintassi
template<
typename T,
join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;
Parametri
T
Tipo tuple
di payload dei messaggi aggiunti e propagati dal blocco.
_Jtype
Il tipo di join
blocco è, greedy
o non_greedy
Membri
Typedef pubblici
Nome | Descrizione |
---|---|
type |
Alias di tipo per T . |
Costruttori pubblici
Nome | Descrizione |
---|---|
Multitype_join | Con overload. Costruisce un blocco della messaggistica multitype_join . |
Distruttore ~multitype_join | Elimina definitivamente il multitype_join blocco di messaggistica. |
Metodi pubblici
Nome | Descrizione |
---|---|
Accettare | Accetta un messaggio offerto da questo multitype_join blocco, trasferendo la proprietà al chiamante. |
acquire_ref | Acquisisce un conteggio dei riferimenti su questo multitype_join blocco di messaggistica per impedire l'eliminazione. |
utilizzare | Utilizza un messaggio offerto in precedenza dal multitype_join blocco di messaggistica e riservato correttamente dalla destinazione, trasferendo la proprietà al chiamante. |
link_target | Collega un blocco di destinazione a questo multitype_join blocco di messaggistica. |
release | Rilascia una prenotazione di messaggi con esito positivo precedente. |
release_ref | Rilascia un conteggio dei riferimenti su questo multiple_join blocco di messaggistica. |
reserve | Riserva un messaggio offerto in precedenza da questo multitype_join blocco di messaggistica. |
unlink_target | Scollega un blocco di destinazione da questo multitype_join blocco di messaggistica. |
unlink_targets | Scollega tutte le destinazioni da questo multitype_join blocco di messaggistica. (sostituzioni )ISource::unlink_targets.) |
Osservazioni:
Per altre informazioni, vedere Blocchi di messaggi asincroni.
Gerarchia di ereditarietà
multitype_join
Requisiti
Intestazione: agents.h
Spazio dei nomi: Concurrency
accept
Accetta un messaggio offerto da questo multitype_join
blocco, trasferendo la proprietà al chiamante.
virtual message<_Destination_type>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_Msgid
Oggetto runtime_object_identity
dell'oggetto offerto message
.
_PTarget
Puntatore al blocco di destinazione che chiama il accept
metodo .
Valore restituito
Puntatore al messaggio di cui il chiamante ha ora la proprietà.
acquire_ref
Acquisisce un conteggio dei riferimenti su questo multitype_join
blocco di messaggistica per impedire l'eliminazione.
virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_PTarget
Puntatore al blocco di destinazione che chiama questo metodo.
Osservazioni:
Questo metodo viene chiamato da un ITarget
oggetto collegato a questa origine durante il link_target
metodo .
consume
Utilizza un messaggio offerto in precedenza dal multitype_join
blocco di messaggistica e riservato correttamente dalla destinazione, trasferendo la proprietà al chiamante.
virtual message<_Destination_type>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_Msgid
Oggetto runtime_object_identity
dell'oggetto riservato message
.
_PTarget
Puntatore al blocco di destinazione che chiama il consume
metodo .
Valore restituito
Puntatore all'oggetto message
di cui il chiamante ha ora la proprietà.
Osservazioni:
Il consume
metodo è simile a accept
, ma deve essere sempre preceduto da una chiamata a reserve
che ha restituito true
.
link_target
Collega un blocco di destinazione a questo multitype_join
blocco di messaggistica.
virtual void link_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_PTarget
Puntatore a un ITarget
blocco da collegare a questo multitype_join
blocco di messaggistica.
Multitype_join
Costruisce un blocco della messaggistica multitype_join
.
explicit multitype_join(
T _Tuple);
multitype_join(
Scheduler& _PScheduler,
T _Tuple);
multitype_join(
ScheduleGroup& _PScheduleGroup,
T _Tuple);
multitype_join(
multitype_join&& _Join);
Parametri
_Tupla
Oggetto tuple
delle origini per questo blocco della messaggistica multitype_join
.
_PScheduler
Oggetto Scheduler
all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica multitype_join
.
_PScheduleGroup
Oggetto ScheduleGroup
all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica multitype_join
. L'oggetto Scheduler
usato è previsto dal gruppo di pianificazione.
_Unirsi
Blocco della messaggistica multitype_join
da cui copiare. Si noti che l'oggetto originale è orfano, si tratta quindi di un costruttore di spostamento.
Osservazioni:
Se non si specificano i parametri _PScheduler
o _PScheduleGroup
, il runtime usa l'utilità di pianificazione predefinita.
Il costruttore di spostamento non viene eseguito durante un blocco. Ciò significa che l'utente deve assicurarsi che non ci siano attività leggere in corso al momento dello spostamento. In caso contrario, possono verificarsi situazioni di race condition che possono portare a eccezioni oppure a uno stato incoerente.
~Multitype_join
Elimina definitivamente il multitype_join
blocco di messaggistica.
~multitype_join();
release
Rilascia una prenotazione di messaggi con esito positivo precedente.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_Msgid
Oggetto runtime_object_identity
dell'oggetto message
da rilasciare.
_PTarget
Puntatore al blocco di destinazione che chiama il release
metodo .
release_ref
Rilascia un conteggio dei riferimenti su questo multiple_join
blocco di messaggistica.
virtual void release_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_PTarget
Puntatore al blocco di destinazione che chiama questo metodo.
Osservazioni:
Questo metodo viene chiamato da un ITarget
oggetto che viene scollegato da questa origine. Il blocco di origine può rilasciare tutte le risorse riservate per il blocco di destinazione.
reserve
Riserva un messaggio offerto in precedenza da questo multitype_join
blocco di messaggistica.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_Msgid
Oggetto runtime_object_identity
dell'oggetto message
riservato.
_PTarget
Puntatore al blocco di destinazione che chiama il reserve
metodo .
Valore restituito
true
se il messaggio è stato riservato correttamente, false
in caso contrario. Le prenotazioni possono avere esito negativo per vari motivi, ad esempio: il messaggio era già riservato o accettato da un'altra destinazione, le prenotazioni potrebbero essere negate dall'origine e così via.
Osservazioni:
Dopo aver chiamato reserve
, se ha esito positivo, è necessario chiamare consume
o release
per accettare o rinunciare rispettivamente al possesso del messaggio.
unlink_target
Scollega un blocco di destinazione da questo multitype_join
blocco di messaggistica.
virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametri
_PTarget
Puntatore a un ITarget
blocco da scollegare da questo multitype_join
blocco di messaggistica.
unlink_targets
Scollega tutte le destinazioni da questo multitype_join
blocco di messaggistica.
virtual void unlink_targets();
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per