Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
| Veri Akışı Adı | Açıklama |
|---|---|
| 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
| Veri Akışı Adı | Açıklama |
|---|---|
| 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
| Veri Akışı Adı | Açıklama |
|---|---|
| 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
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.
Dönüş 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ı.
Dönüş 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;
Dönüş Değeri
true bloğu bir değer aldıysa, false aksi takdirde.
link_target_notification
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.
Dönüş 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.
Dönüş 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.
Dönüş 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();
değer
İleti bloğunda depolanan iletinin geçerli yüküne single_assignment bir başvuru alır.
T const& value();
Dönüş 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ı