Condividi tramite


Classe single_assignment

Un blocco della messaggistica single_assignment è un propagator_block multi-origine, a destinazione singola, in grado di archiviare un unico message di sola scrittura.

template<
   class _Type
>
class single_assignment : public propagator_block<multi_link_registry<ITarget<_Type>>, multi_link_registry<ISource<_Type>>>;

Parametri

  • _Type
    Tipo di payload del messaggio memorizzato e propagato dal buffer.

Membri

Costruttori pubblici

Nome

Oggetto di descrizione

Costruttore single_assignment::single_assignment

Metodo di overload. Costruisce un blocco della messaggistica single_assignment.

Distruttore single_assignment::~single_assignment

Distrugge il blocco della messaggistica single_assignment.

Metodi pubblici

Nome

Oggetto di descrizione

Metodo single_assignment::has_value

Controlla se questo blocco della messaggistica single_assignment è già stato inizializzato con un valore.

Metodo single_assignment::value

Ottiene un riferimento al payload corrente del messaggio archiviato nel blocco della messaggistica single_assignment.

Metodi protetti

Nome

Oggetto di descrizione

Metodo single_assignment::accept_message

Accetta un messaggio offerto dal blocco di messaggistica single_assignment, restituendo una copia del messaggio al chiamante.

Metodo single_assignment::consume_message

Utilizza un messaggio precedentemente offerto dal blocco di messaggistica single_assignment e riservato dalla destinazione restituendo una copia del messaggio al chiamante.

Metodo single_assignment::link_target_notification

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

Metodo single_assignment::propagate_message

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

Metodo single_assignment::propagate_to_any_targets

Consente di posizionare message_PMessage in tale blocco della messaggistica single_assignment e di metterlo a disposizione di tutte le destinazioni collegate.

Metodo single_assignment::release_message

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

Metodo single_assignment::reserve_message

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

Metodo single_assignment::resume_propagation

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

Metodo single_assignment::send_message

Consente di passare in modo sincrono un messaggio da un blocco ISource a quello della messaggistica single_assignment. Viene richiamato dal metodo send se chiamato da un blocco di origine.

Note

Un blocco della messaggistica single_assignment propaga copie del messaggio in ogni destinazione.

Per ulteriori informazioni, vedere Blocchi dei messaggi asincroni.

Gerarchia di ereditarietà

ISource

source_block

ITarget

propagator_block

single_assignment

Requisiti

Header: agents.h

Spazio dei nomi: Concurrency

Vedere anche

Riferimenti

Spazio dei nomi Concurrency

Classe overwrite_buffer

Classe unbounded_buffer