multitype_join 클래스
multitype_join
메시징 블록은 각 소스에서 다양한 형식의 메시지를 결합하고 결합된 메시지의 튜플을 대상에 제공하는 다중 소스, 단일 대상 메시징 블록입니다.
구문
template<
typename T,
join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;
매개 변수
T
tuple
블록에 의해 조인되고 전파된 메시지의 페이로드 형식입니다.
_Jtype
이 블록의 join
종류는 다음 중 하나 greedy
또는 non_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.) |
설명
자세한 내용은 비동기 메시지 블록을 참조 하세요.
상속 계층 구조
multitype_join
요구 사항
헤더: agents.h
네임스페이스: 동시성
동의
이 multitype_join
블록에서 제공한 메시지를 수락하여 소유권을 호출자에게 전송합니다.
virtual message<_Destination_type>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
매개 변수
_MsgId
runtime_object_identity
제공 message
된 개체의 개체입니다.
_PTarget
메서드를 호출하는 대상 블록에 대한 accept
포인터입니다.
Return Value
이제 호출자의 소유권이 있는 메시지에 대한 포인터입니다.
acquire_ref
삭제를 방지하기 위해 이 multitype_join
메시징 블록에 대한 참조 횟수를 가져옵니다.
virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
매개 변수
_PTarget
이 메서드를 호출하는 대상 블록에 대한 포인터입니다.
설명
이 메서드는 메서드 중에 link_target
이 원본에 연결된 개체에 의해 ITarget
호출됩니다.
소비
이전에 메시징 블록에서 제공한 multitype_join
메시지를 사용하고 대상에서 성공적으로 예약하여 소유권을 호출자에게 전송합니다.
virtual message<_Destination_type>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
매개 변수
_MsgId
runtime_object_identity
예약된 message
개체의 개체입니다.
_PTarget
메서드를 호출하는 대상 블록에 대한 consume
포인터입니다.
Return Value
호출자의 소유권이 message
있는 개체에 대한 포인터입니다.
설명
메서드 consume
는 유사accept
하지만 항상 반환true
된 메서드에 대한 reserve
호출 앞에 있어야 합니다.
link_target
대상 블록을 이 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
포인터입니다.
Return Value
true
메시지가 성공적으로 예약 false
되었으면 그렇지 않습니다. 예약은 메시지를 이미 다른 대상이 예약했거나 수락한 경우, 소스에서 예약을 거부한 경우 등과 같은 다양한 이유로 실패할 수 있습니다.
설명
호출reserve
한 후 성공하는 경우 메시지의 소유를 각각 취하거나 release
포기하기 위해 호출 consume
해야 합니다.
unlink_target
이 multitype_join
메시징 블록에서 대상 블록의 연결을 해제합니다.
virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);
매개 변수
_PTarget
이 multitype_join
메시징 블록에서 연결을 해제할 블록에 대한 포인터 ITarget
입니다.
unlink_targets
이 multitype_join
메시징 블록에서 모든 대상의 연결을 해제합니다.
virtual void unlink_targets();
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기