共用方式為


multitype_join 類別

multitype_join 傳訊區塊是多來源的單一目標傳訊區塊,會與來自其來源的不同類型訊息合併,並且為其目標提供 Tuple 合併的訊息。

語法

template<
    typename T,
    join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;

參數

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

_Jtype
這是 greedy 或 的區塊類型 joinnon_greedy

成員

公用 Typedefs

名稱 描述
type 的類型 T 別名。

公用建構函式

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

公用方法

名稱 描述
接受 接受此 multitype_join 區塊所提供的訊息,並將擁有權轉移給呼叫端。
acquire_ref 取得此 multitype_join 傳訊區塊的參考計數,以防止刪除。
消費 取用訊息區塊先前提供的 multitype_join 訊息,並成功由目標保留,並將擁有權轉移給呼叫端。
link_target 將目標區塊連結至此 multitype_join 傳訊區塊。
release 釋放先前成功的訊息保留。
release_ref 釋放此 multiple_join 傳訊區塊的參考計數。
reserve 保留此 multitype_join 傳訊區塊先前提供的訊息。
unlink_target 從這個 multitype_join 傳訊區塊取消連結目標區塊。
unlink_targets 從這個 multitype_join 傳訊區塊取消連結所有目標。 (覆寫 ISource::unlink_targets .

備註

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

繼承階層架構

ISource

multitype_join

需求

標頭: agents.h

命名空間: concurrency

accept

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

virtual message<_Destination_type>* accept(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

參數

_MsgId
runtime_object_identity所提供 message 物件的 。

_PTarget
呼叫 方法之目標區塊的 accept 指標。

傳回值

呼叫端現在擁有其擁有權之訊息的指標。

acquire_ref

取得此 multitype_join 傳訊區塊的參考計數,以防止刪除。

virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);

參數

_PTarget
呼叫這個方法之目標區塊的指標。

備註

這個方法是由 ITarget 在 方法期間 link_target 連結至這個來源的物件所呼叫。

消耗

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

virtual message<_Destination_type>* consume(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

參數

_MsgId
runtime_object_identity保留 message 物件的 。

_PTarget
呼叫 方法之目標區塊的 consume 指標。

傳回值

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

備註

方法 consume 類似于 accept ,但之前一律必須有傳回 truereserve 呼叫。

將目標區塊連結至此 multitype_join 傳訊區塊。

virtual void link_target(_Inout_ ITarget<_Destination_type>* _PTarget);

參數

_PTarget
要連結至此 multitype_join 傳訊區塊之區塊的指標 ITarget

multitype_join

建構 multitype_join 傳訊區塊。

explicit multitype_join(
    T _Tuple);

multitype_join(
    Scheduler& _PScheduler,
    T _Tuple);

multitype_join(
    ScheduleGroup& _PScheduleGroup,
    T _Tuple);

multitype_join(
    multitype_join&& _Join);

參數

_元
tuple 傳訊區塊的 multitype_join 來源。

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

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

_加入
作為複製來源處的 multitype_join 傳訊區塊。 請注意,原始物件會被遺棄,使其成為移動建構函式。

備註

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

移動建構函式不會在鎖定下執行,這表示使用者必須確認在移動時沒有任何輕量工作在執行中。 否則,可能發生許多競爭情況,導致例外狀況或不一致的狀態。

~multitype_join

multitype_join終結傳訊區塊。

~multitype_join();

版本

釋放先前成功的訊息保留。

virtual void release(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

參數

_MsgId
runtime_object_identity要釋放之 message 物件的 。

_PTarget
呼叫 方法之目標區塊的 release 指標。

release_ref

釋放此 multiple_join 傳訊區塊的參考計數。

virtual void release_ref(_Inout_ ITarget<_Destination_type>* _PTarget);

參數

_PTarget
呼叫這個方法之目標區塊的指標。

備註

這個方法是由 ITarget 從這個來源取消連結的物件所呼叫。 允許來源區塊釋放保留給目標區塊的任何資源。

reserve

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

virtual bool reserve(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

參數

_MsgId
runtime_object_identity要保留之 message 物件的 。

_PTarget
呼叫 方法之目標區塊的 reserve 指標。

傳回值

true 如果已成功保留訊息,則為 , false 否則為 。 保留失敗可能有許多原因,包括:訊息已經保留或已由另一個目標接受、來源拒絕保留等等。

備註

呼叫 reserve 之後,如果成功,您必須呼叫 consumerelease ,才能分別取得或放棄訊息的擁有權。

從這個 multitype_join 傳訊區塊取消連結目標區塊。

virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);

參數

_PTarget
要從這個 multitype_join 傳訊區塊取消連結之區塊的指標 ITarget

從這個 multitype_join 傳訊區塊取消連結所有目標。

virtual void unlink_targets();

另請參閱

concurrency 命名空間
choice 類別
join 類別