다음을 통해 공유


join 클래스

join 메시징 블록은 각 소스에서 T 형식의 메시지를 결합하는 순서가 지정된 단일 대상 다중 소스 propagator_block입니다.

구문

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
이 블록의 join 종류는 다음 중 하나 greedy 또는 non_greedy

멤버

공용 생성자

속성 설명
join 오버로드됨. join 메시징 블록을 생성합니다.
~소멸자 조인 블록을 파괴합니다 join .

보호된 메서드

속성 설명
accept_message join 메시징 블록에서 제공한 메시지를 수락하여 소유권을 호출자에게 전송합니다.
consume_message 이전에 메시징 블록에서 제공하고 대상에서 join 예약한 메시지를 사용하여 소유권을 호출자에게 전송합니다.
link_target_notification 새 대상이 이 join 메시징 블록에 연결되었음을 나타내는 콜백입니다.
propagate_message 블록에서 ISourcejoin 메시징 블록으로 메시지를 비동기적으로 전달합니다. 소스 블록에서 호출할 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

네임스페이스: 동시성

accept_message

join 메시징 블록에서 제공한 메시지를 수락하여 소유권을 호출자에게 전송합니다.

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

매개 변수

_MsgId
runtime_object_identity 제공 message 된 개체의 개체입니다.

Return Value

호출자의 소유권이 message 있는 개체에 대한 포인터입니다.

consume_message

이전에 메시징 블록에서 제공하고 대상에서 join 예약한 메시지를 사용하여 소유권을 호출자에게 전송합니다.

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

매개 변수

_MsgId
runtime_object_identity 사용 중인 개체의 message 개체입니다.

Return Value

호출자의 소유권이 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 은 제공된 메시지를 수락해야 하는지 여부를 결정하기 위해 이 join 메시징 블록에서 호출하는 서명 bool (T const &) 이 있는 functor입니다.

~잇다

블록을 파괴합니다 join .

~join();

새 대상이 이 join 메시징 블록에 연결되었음을 나타내는 콜백입니다.

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

propagate_message

블록에서 ISourcejoin 메시징 블록으로 메시지를 비동기적으로 전달합니다. 소스 블록에서 호출할 propagate 때 메서드에 의해 호출됩니다.

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

매개 변수

_PMessage
message 개체에 대한 포인터입니다.

_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.

Return Value

대상이 메시지로 무엇을 하기로 결정했는지에 대한 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 된 개체의 개체입니다.

Return Value

true 메시지가 성공적으로 예약 false 되었으면 그렇지 않습니다.

설명

호출된 후 reserve 반환 trueconsume 되는 경우 메시지의 소유권을 취하거나 release 해제하기 위해 호출해야 합니다.

resume_propagation

예약이 해제된 후 전파를 다시 시작합니다.

virtual void resume_propagation();

참고 항목

concurrency 네임스페이스
choice 클래스
multitype_join 클래스