Aracılığıyla paylaş


single_assignment Sınıfı

Mesajlaşma single_assignment bloğu çok hedefli, çok kaynaklı, tek bir yazma bir kez messagedepolayabilen sıralı propagator_block bir blok.

Sözdizimi

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

Parametreler

T
Arabellek tarafından depolanan ve yayılan iletinin yük türü.

Üyeler

Ortak Oluşturucular

Ad Tanım
Single_assignment Aşırı yüklendi. Bir single_assignment mesajlaşma bloğu oluşturur.
~single_assignment Yıkıcı Mesajlaşma bloğunu single_assignment yok eder.

Genel Yöntemler

Ad Tanım
has_value Bu single_assignment mesajlaşma bloğunun henüz bir değerle başlatılıp başlatılmadığını denetler.
value İleti bloğunda depolanan iletinin geçerli yüküne single_assignment bir başvuru alır.

Korumalı Yöntemler

Ad Tanım
accept_message Bu single_assignment mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve arayana iletinin bir kopyasını döndürür.
consume_message Daha önce tarafından sunulan single_assignment ve hedef tarafından ayrılmış bir ileti kullanır ve iletinin bir kopyasını arayana döndürür.
link_target_notification Bu single_assignment mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.
propagate_message Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu single_assignment mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından propagate çağrılır.
propagate_to_any_targets message _PMessage öğesini bu single_assignment mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunar.
release_message Önceki ileti rezervasyonlarını yayınlar. (Geçersiz kılmalar source_block::release_message.)
reserve_message Daha önce bu single_assignment mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır. (Geçersiz kılmalar source_block::reserve_message.)
resume_propagation Rezervasyon yayımlandıktan sonra yayılmaya devam eder. (Geçersiz kılmalar source_block::resume_propagation.)
send_message Bir bloktan gelen iletiyi zaman uyumlu bir ISource şekilde bu single_assignment mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından send çağrılır.

Açıklamalar

Mesajlaşma single_assignment bloğu, iletisinin kopyalarını her hedefe yayılır.

Daha fazla bilgi için bkz . Zaman Uyumsuz İleti Blokları.

Devralma Hiyerarşisi

Isource

Itarget

Source_block

Propagator_block

single_assignment

Gereksinimler

Üst bilgi: agents.h

Ad alanı: eşzamanlılık

accept_message

Bu single_assignment mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve arayana iletinin bir kopyasını döndürür.

virtual message<T>* accept_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
runtime_object_identity Sunulan message nesnenin öğesi.

İade Değeri

Çağıranın message artık sahip olduğu nesnenin işaretçisi.

Açıklamalar

Mesajlaşma single_assignment bloğu, o anda tutulan iletinin sahipliğini aktarmak yerine iletinin kopyalarını hedeflerine döndürür.

consume_message

Daha önce tarafından sunulan single_assignment ve hedef tarafından ayrılmış bir ileti kullanır ve iletinin bir kopyasını arayana döndürür.

virtual message<T>* consume_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
runtime_object_identity Tüketilen nesnenin message sayısı.

İade Değeri

Çağıranın message artık sahip olduğu nesnenin işaretçisi.

Açıklamalar

benzeridir accept, ancak her zaman için bir çağrısının reserveönündedir.

has_value

Bu single_assignment mesajlaşma bloğunun henüz bir değerle başlatılıp başlatılmadığını denetler.

bool has_value() const;

İade Değeri

true bloğu bir değer aldıysa, false aksi takdirde.

Bu single_assignment mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

Parametreler

_PTarget
Yeni bağlanan hedefe işaret eden bir işaretçi.

propagate_message

Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu single_assignment mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından propagate çağrılır.

virtual message_status propagate_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

Parametreler

_PMessage
Nesnenin işaretçisi message .

_PSource
İletiyi sunan kaynak bloğun işaretçisi.

İade Değeri

Hedefin iletiyle ne yapmaya karar verdiklerine ilişkin message_status bir gösterge.

propagate_to_any_targets

message_PMessage öğesini bu single_assignment mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunar.

virtual void propagate_to_any_targets(_Inout_opt_ message<T>* _PMessage);

Parametreler

_PMessage
Bu single_assignment mesajlaşma bloğunun sahipliğini aldığı bir message işaretçi.

release_message

Önceki ileti rezervasyonlarını yayınlar.

virtual void release_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
Serbest runtime_object_identity bırakılan nesnenin message .

reserve_message

Daha önce bu single_assignment mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
runtime_object_identity Ayrılan nesnenin message öğesi.

İade Değeri

true ileti başarıyla ayrılmışsa, false aksi takdirde.

Açıklamalar

çağrıldıktan sonrareserve, döndürüyorsatrueconsume, iletinin sahipliğini almak veya release yayınlamak için çağrılmalıdır.

resume_propagation

Rezervasyon yayımlandıktan sonra yayılmaya devam eder.

virtual void resume_propagation();

send_message

Bir bloktan gelen iletiyi zaman uyumlu bir ISource şekilde bu single_assignment mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından send çağrılır.

virtual message_status send_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

Parametreler

_PMessage
Nesnenin işaretçisi message .

_PSource
İletiyi sunan kaynak bloğun işaretçisi.

İade Değeri

Hedefin iletiyle ne yapmaya karar verdiklerine ilişkin message_status bir gösterge.

Single_assignment

Bir single_assignment mesajlaşma bloğu oluşturur.

single_assignment();

single_assignment(
    filter_method const& _Filter);

single_assignment(
    Scheduler& _PScheduler);

single_assignment(
    Scheduler& _PScheduler,
    filter_method const& _Filter);

single_assignment(
    ScheduleGroup& _PScheduleGroup);

single_assignment(
    ScheduleGroup& _PScheduleGroup,
    filter_method const& _Filter);

Parametreler

_Filtre
Sunulan iletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.

_PScheduler
Scheduler İleti bloğu için yayma görevinin single_assignment zamanlandığı nesne.

_PScheduleGroup
ScheduleGroup İleti bloğu için yayma görevinin single_assignment zamanlandığı nesne. Scheduler Kullanılan nesne zamanlama grubu tarafından örtülür.

Açıklamalar

veya _PScheduleGroup parametrelerini belirtmezseniz çalışma zamanı varsayılan zamanlayıcıyı _PScheduler kullanır.

Türüfilter_method, sunulan bir iletiyi kabul edip etmemesi gerektiğini belirlemek için bu single_assignment mesajlaşma bloğu tarafından çağrılan imzalı bool (T const &) bir functor'dır.

~Single_assignment

Mesajlaşma bloğunu single_assignment yok eder.

~single_assignment();

value

İleti bloğunda depolanan iletinin geçerli yüküne single_assignment bir başvuru alır.

T const& value();

İade Değeri

Depolanan iletinin yükü.

Açıklamalar

Bu yöntem, ileti bloğunda şu anda hiçbir ileti depolanmadıysa ileti gelene single_assignment kadar bekler.

Ayrıca bkz.

Eşzamanlılık Ad Alanı
overwrite_buffer Sınıfı
unbounded_buffer Sınıfı