unbounded_buffer 클래스
unbounded_buffer
메시징 블록은 메시지를 개수에 제한 없이 저장할 수 있는, 순서가 지정된 다중 대상 다중 소스 propagator_block
입니다.
구문
template<
class _Type
>
class unbounded_buffer : public propagator_block<multi_link_registry<ITarget< _Type>>, multi_link_registry<ISource< _Type>>>;
매개 변수
_형
버퍼에 의해 저장되고 전파되는 메시지의 페이로드 형식입니다.
멤버
공용 생성자
속성 | 설명 |
---|---|
unbounded_buffer | 오버로드됨. 메시징 블록을 생성합니다 unbounded_buffer . |
~unbounded_buffer 소멸자 | 메시징 블록을 삭제합니다 unbounded_buffer . |
공용 메서드
이름 | 설명 |
---|---|
큐 | 메시징 블록에서 unbounded_buffer 항목을 제거합니다. |
큐 | 메시징 블록에 unbounded_buffer 항목을 추가합니다. |
보호된 메서드
속성 | 설명 |
---|---|
accept_message | 이 unbounded_buffer 메시징 블록에서 제공한 메시지를 수락하여 소유권을 호출자에게 전송합니다. |
consume_message | 이전에 메시징 블록에서 제공하고 대상에서 unbounded_buffer 예약한 메시지를 사용하여 소유권을 호출자에게 전송합니다. |
link_target_notification | 새 대상이 이 unbounded_buffer 메시징 블록에 연결되었음을 나타내는 콜백입니다. |
process_input_messages | message _PMessage 이 unbounded_buffer 메시징 블록에 배치하고 연결된 모든 대상에 제공하려고 합니다. |
propagate_message | 블록에서 ISource 이 unbounded_buffer 메시징 블록으로 메시지를 비동기적으로 전달합니다. 소스 블록에서 호출할 propagate 때 메서드에 의해 호출됩니다. |
propagate_output_messages | message _PMessage 이 unbounded_buffer 메시징 블록에 배치하고 연결된 모든 대상에 제공하려고 합니다. (source_block::p ropagate_output_messages를 재정 의합니다.) |
release_message | 이전 메시지 예약을 해제합니다. (source_block::release_message 재정의) |
reserve_message | 이 unbounded_buffer 메시징 블록에서 이전에 제공한 메시지를 예약합니다. (source_block::reserve_message 재정의) |
resume_propagation | 예약이 해제된 후 전파를 다시 시작합니다. (source_block::resume_propagation 재정의) |
send_message | 블록에서 ISource 이 unbounded_buffer 메시징 블록으로 메시지를 동기적으로 전달합니다. 소스 블록에서 호출할 send 때 메서드에 의해 호출됩니다. |
supports_anonymous_source | supports_anonymous_source 메서드를 재정의하여 이 블록이 연결되지 않은 소스에서 제공하는 메시지를 수락할 수 있음을 나타냅니다. (재정의 ITarget::supports_anonymous_source.) |
자세한 내용은 비동기 메시지 블록을 참조 하세요.
상속 계층 구조
unbounded_buffer
요구 사항
헤더: agents.h
네임스페이스: 동시성
accept_message
이 unbounded_buffer
메시징 블록에서 제공한 메시지를 수락하여 소유권을 호출자에게 전송합니다.
virtual message<_Type> * accept_message(
runtime_object_identity _MsgId
);
매개 변수
_MsgId
runtime_object_identity
제공 message
된 개체의 개체입니다.
Return Value
호출자의 소유권이 message
있는 개체에 대한 포인터입니다.
consume_message
이전에 메시징 블록에서 제공하고 대상에서 unbounded_buffer
예약한 메시지를 사용하여 소유권을 호출자에게 전송합니다.
virtual message<_Type> * consume_message(
runtime_object_identity _MsgId
);
매개 변수
_MsgId
runtime_object_identity
사용 중인 개체의 message
개체입니다.
Return Value
호출자의 소유권이 message
있는 개체에 대한 포인터입니다.
설명
은 accept
유사하지만 항상 호출 앞에 있습니다 reserve
.
큐에서 제거
메시징 블록에서 unbounded_buffer
항목을 제거합니다.
_Type dequeue();
Return Value
에서 제거된 메시지의 페이로드입니다 unbounded_buffer
.
큐에 넣기(enqueue)
메시징 블록에 unbounded_buffer
항목을 추가합니다.
bool enqueue(
_Type const& _Item
);
매개 변수
_항목
추가할 항목입니다.
Return Value
true
항목이 수락 false
되었으면 그렇지 않습니다.
link_target_notification
새 대상이 이 unbounded_buffer
메시징 블록에 연결되었음을 나타내는 콜백입니다.
virtual void link_target_notification(
_Inout_ ITarget<_Type> * _PTarget
);
매개 변수
_PTarget
새로 연결된 대상에 대한 포인터입니다.
propagate_message
블록에서 ISource
이 unbounded_buffer
메시징 블록으로 메시지를 비동기적으로 전달합니다. 소스 블록에서 호출할 propagate
때 메서드에 의해 호출됩니다.
virtual message_status propagate_message(
_Inout_ message<_Type> * _PMessage,
_Inout_ ISource<_Type> * _PSource
);
매개 변수
_PMessage
message
개체에 대한 포인터입니다.
_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.
Return Value
대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_status 표시입니다.
propagate_output_messages
message
_PMessage
이 unbounded_buffer
메시징 블록에 배치하고 연결된 모든 대상에 제공하려고 합니다.
virtual void propagate_output_messages();
설명
다른 메시지가 이미 이 unbounded_buffer
메시지보다 앞서 있는 경우 이전 메시지가 수락되거나 소비될 때까지 연결된 대상에 전파되지 않습니다. 첫 번째 연결된 대상이 성공적으로 accept
연결되거나 consume
메시지가 소유권을 얻게 되며 다른 대상은 메시지를 가져올 수 없습니다.
process_input_messages
message
_PMessage
이 unbounded_buffer
메시징 블록에 배치하고 연결된 모든 대상에 제공하려고 합니다.
virtual void process_input_messages(
_Inout_ message<_Type> * _PMessage
);
매개 변수
_PMessage
처리할 메시지에 대한 포인터입니다.
release_message
이전 메시지 예약을 해제합니다.
virtual void release_message(
runtime_object_identity _MsgId
);
매개 변수
_MsgId
runtime_object_identity
해제되는 개체의 message
수입니다.
reserve_message
이 unbounded_buffer
메시징 블록에서 이전에 제공한 메시지를 예약합니다.
virtual bool reserve_message(
runtime_object_identity _MsgId
);
매개 변수
_MsgId
runtime_object_identity
예약 중인 개체의 message
개체입니다.
Return Value
true
메시지가 성공적으로 예약 false
되었으면 그렇지 않습니다.
설명
호출된 후 reserve
반환 true
consume
되는 경우 메시지의 소유권을 취하거나 release
해제하기 위해 호출해야 합니다.
resume_propagation
예약이 해제된 후 전파를 다시 시작합니다.
virtual void resume_propagation();
send_message
블록에서 ISource
이 unbounded_buffer
메시징 블록으로 메시지를 동기적으로 전달합니다. 소스 블록에서 호출할 send
때 메서드에 의해 호출됩니다.
virtual message_status send_message(
_Inout_ message<_Type> * _PMessage,
_Inout_ ISource<_Type> * _PSource
);
매개 변수
_PMessage
message
개체에 대한 포인터입니다.
_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.
Return Value
대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_status 표시입니다.
supports_anonymous_source
supports_anonymous_source
메서드를 재정의하여 이 블록이 연결되지 않은 소스에서 제공하는 메시지를 수락할 수 있음을 나타냅니다.
virtual bool supports_anonymous_source();
Return Value
true
블록이 제공된 메시지를 연기하지 않기 때문입니다.
unbounded_buffer
메시징 블록을 생성합니다 unbounded_buffer
.
unbounded_buffer();
unbounded_buffer(
filter_method const& _Filter
);
unbounded_buffer(
Scheduler& _PScheduler
);
unbounded_buffer(
Scheduler& _PScheduler,
filter_method const& _Filter
);
unbounded_buffer(
ScheduleGroup& _PScheduleGroup
);
unbounded_buffer(
ScheduleGroup& _PScheduleGroup,
filter_method const& _Filter
);
매개 변수
_필터
제공된 메시지를 수락해야 하는지 여부를 결정하는 필터 함수입니다.
_PScheduler
Scheduler
메시징 블록의 전파 작업이 예약되는 unbounded_buffer
개체입니다.
_PScheduleGroup
ScheduleGroup
메시징 블록의 전파 작업이 예약되는 unbounded_buffer
개체입니다. 사용된 Scheduler
개체는 일정 그룹에서 암시됩니다.
설명
런타임은 _PScheduler
또는 _PScheduleGroup
매개 변수를 지정하지 않는 경우 기본 스케줄러를 사용합니다.
이 형식 filter_method
은 제공된 메시지를 수락해야 하는지 여부를 결정하기 위해 이 unbounded_buffer
메시징 블록에서 호출하는 서명 bool (_Type const &)
이 있는 functor입니다.
~unbounded_buffer
메시징 블록을 삭제합니다 unbounded_buffer
.
~unbounded_buffer();
참고 항목
concurrency 네임스페이스
overwrite_buffer 클래스
single_assignment 클래스