join 類別

join 傳訊區塊是單一目標、多來源的排序 propagator_block,會與來自其每個來源的 T 類型訊息合併。

語法

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>>>;

參數

T
區塊所聯結和傳播之訊息的承載類型。

_Jtype
這是 greedy 或 的區塊類型 joinnon_greedy

成員

公用建構函式

名稱 描述
join 已多載。 建構 join 傳訊區塊。
~join 解構函式 終結 區塊 join

受保護的方法

名稱 描述
accept_message 接受此 join 傳訊區塊所提供的訊息,並將擁有權轉移給呼叫端。
consume_message 取用訊息區塊先前提供的 join 訊息,並由目標保留,並將擁有權轉移給呼叫端。
link_target_notification 回呼,通知新目標已連結至此 join 傳訊區塊。
propagate_message 以非同步方式將訊息從 ISource 區塊傳遞至這個 join 傳訊區塊。 propagate當來源區塊呼叫時,方法會叫用它。
propagate_to_any_targets 建構輸出訊息,其中包含從每個來源傳播訊息時的輸入訊息。 將此輸出訊息傳送給其每個目標。
release_message 釋放先前的訊息保留。 (覆寫 source_block::release_message .
reserve_message 保留此 join 傳訊區塊先前提供的訊息。 (覆寫 source_block::reserve_message .
resume_propagation 在發行保留之後繼續傳播。 (覆寫 source_block::resume_propagation .

備註

如需詳細資訊,請參閱 非同步消息塊

繼承階層架構

ISource

ITarget

source_block

propagator_block

join

需求

標頭: agents.h

命名空間: concurrency

accept_message

接受此 join 傳訊區塊所提供的訊息,並將擁有權轉移給呼叫端。

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

參數

_MsgId
runtime_object_identity所提供 message 物件的 。

傳回值

呼叫端現在擁有其擁有權的物件指標 message

consume_message

取用訊息區塊先前提供的 join 訊息,並由目標保留,並將擁有權轉移給呼叫端。

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

參數

_MsgId
runtime_object_identitymessage 所取用物件的 。

傳回值

呼叫端現在擁有其擁有權的物件指標 message

備註

類似于 accept ,但前面一律會呼叫 reserve

join

建構 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);

參數

_NumInputs
允許此 join 區塊的輸入數目。

_濾波器
篩選函式,決定是否應接受提供的訊息。

_PScheduler
Scheduler 物件,在其內會排定 join 傳訊區塊的傳播工作。

_PScheduleGroup
ScheduleGroup 物件,在其內會排定 join 傳訊區塊的傳播工作。 所使用的 Scheduler 物件由排程群組所隱含。

備註

如果您未指定 _PScheduler_PScheduleGroup 參數,執行階段會使用預設排程器。

此類型 filter_method 是具有簽章 bool (T const &) 的函式,由此 join 傳訊區塊叫用,以判斷它是否應該接受提供的訊息。

~加入

終結 區塊 join

~join();

回呼,通知新目標已連結至此 join 傳訊區塊。

virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);

propagate_message

以非同步方式將訊息從 ISource 區塊傳遞至這個 join 傳訊區塊。 propagate當來源區塊呼叫時,方法會叫用它。

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

參數

_PMessage
message 物件的指標。

_PSource
提供訊息的來源區塊指標。

傳回值

message_status 指出目標決定對訊息執行的動作。

propagate_to_any_targets

建構輸出訊息,其中包含從每個來源傳播訊息時的輸入訊息。 將此輸出訊息傳送給其每個目標。

void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);

release_message

釋放先前的訊息保留。

virtual void release_message(runtime_object_identity _MsgId);

參數

_MsgId
runtime_object_identity要釋放之 message 物件的 。

reserve_message

保留此 join 傳訊區塊先前提供的訊息。

virtual bool reserve_message(runtime_object_identity _MsgId);

參數

_MsgId
runtime_object_identity所提供 message 物件的 。

傳回值

true 如果已成功保留訊息,則為 , false 否則為 。

備註

呼叫 之後 reserve ,如果傳回 trueconsume 則必須呼叫 或 release 以取得或釋放訊息的擁有權。

resume_propagation

在發行保留之後繼續傳播。

virtual void resume_propagation();

另請參閱

concurrency 命名空間
choice 類別
multitype_join 類別