다음을 통해 공유


에이전트 클래스

모든 독립 에이전트에 대한 기본 클래스로 사용되는 클래스입니다. 다른 에이전트로부터 상태를 숨기고 메시지 전달을 사용하여 상호 작용하는 데 사용됩니다.

구문

class agent;

멤버

공용 생성자

속성 설명
대리인 오버로드됨. 에이전트를 생성합니다.
~agent 소멸자 에이전트를 제거합니다.

공용 메서드

이름 설명
cancel 에이전트 agent_created 를 상태 또는 agent_runnable 상태에서 상태로 agent_canceled 이동합니다.
start 에이전트를 agent_created 상태에서 상태로 이동하고 agent_runnable 실행되도록 예약합니다.
status 에이전트의 상태 정보의 동기 소스입니다.
status_port 에이전트의 상태 정보의 비동기 원본입니다.
wait 에이전트가 작업을 완료할 때까지 기다립니다.
wait_for_all 지정된 모든 에이전트가 작업을 완료할 때까지 기다립니다.
wait_for_one 지정된 에이전트 중 하나가 작업을 완료할 때까지 기다립니다.

보호된 메서드

속성 설명
수행 에이전트가 agent_done 완료되었음을 나타내는 상태로 에이전트를 이동합니다.
run 에이전트의 주 작업을 나타냅니다. run 는 파생 클래스에서 재정의되어야 하며 에이전트가 시작된 후 수행해야 하는 작업을 지정합니다.

설명

자세한 내용은 비동기 에이전트를 참조 하세요.

상속 계층 구조

agent

요구 사항

헤더: agents.h

네임스페이스: 동시성

에이전트

에이전트를 생성합니다.

agent();

agent(Scheduler& _PScheduler);

agent(ScheduleGroup& _PGroup);

매개 변수

_PScheduler
Scheduler 에이전트의 실행 작업이 예약된 개체입니다.

_PGroup
ScheduleGroup 에이전트의 실행 작업이 예약된 개체입니다. 사용된 Scheduler 개체는 일정 그룹에서 암시됩니다.

설명

런타임은 _PScheduler 또는 _PGroup 매개 변수를 지정하지 않는 경우 기본 스케줄러를 사용합니다.

~대리인

에이전트를 제거합니다.

virtual ~agent();

설명

터미널 상태(또는 agent_done agent_canceled)에 없는 에이전트를 삭제하는 것은 오류입니다. 이는 에이전트가 클래스에서 상속되는 클래스의 소멸자에서 agent 터미널 상태에 도달할 때까지 대기하여 방지할 수 있습니다.

cancel

에이전트 agent_created 를 상태 또는 agent_runnable 상태에서 상태로 agent_canceled 이동합니다.

bool cancel();

Return Value

true 에이전트가 취소되었 false 으면 그렇지 않습니다. 에이전트가 이미 실행되기 시작했거나 이미 완료된 경우 에이전트를 취소할 수 없습니다.

완료

에이전트가 agent_done 완료되었음을 나타내는 상태로 에이전트를 이동합니다.

bool done();

Return Value

true에이전트가 상태로 false 이동 agent_done 되면 그렇지 않습니다. 취소된 에이전트는 상태로 이동할 agent_done 수 없습니다.

설명

에이전트 실행이 완료되었음을 알고 있는 경우 메서드의 끝에서 run 이 메서드를 호출해야 합니다.

실행

에이전트의 주 작업을 나타냅니다. run 는 파생 클래스에서 재정의되어야 하며 에이전트가 시작된 후 수행해야 하는 작업을 지정합니다.

virtual void run() = 0;

설명

에이전트 상태는 이 메서드가 agent_started 호출되기 바로 전에 변경됩니다. 메서드는 반환하기 전에 적절한 상태로 에이전트에서 호출 done 해야 하며 예외를 throw하지 않을 수 있습니다.

start

에이전트를 agent_created 상태에서 상태로 이동하고 agent_runnable 실행되도록 예약합니다.

bool start();

Return Value

true 에이전트가 올바르게 false 시작되었으면 그렇지 않습니다. 취소된 에이전트를 시작할 수 없습니다.

status

에이전트의 상태 정보의 동기 소스입니다.

agent_status status();

Return Value

에이전트의 현재 상태를 반환합니다. 반환된 상태가 반환된 직후에 변경될 수 있습니다.

status_port

에이전트의 상태 정보의 비동기 원본입니다.

ISource<agent_status>* status_port();

Return Value

에이전트의 현재 상태에 대한 메시지를 보낼 수 있는 메시지 원본을 반환합니다.

wait

에이전트가 작업을 완료할 때까지 기다립니다.

static agent_status __cdecl wait(
    _Inout_ agent* _PAgent,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

매개 변수

_PAgent
기다릴 에이전트에 대한 포인터입니다.

_타임 아웃
대기할 최대 시간(밀리초)입니다.

Return Value

agent_status 대기가 완료된 에이전트입니다. 이 중 agent_canceled 하나일 수 있습니다.agent_done

설명

에이전트 작업이 완료된 경우 에이전트가 또는 상태를 입력합니다 agent_canceled agent_done .

매개 변수 _Timeout 에 상수가 COOPERATIVE_TIMEOUT_INFINITE아닌 값이 있는 경우 에이전트가 작업을 완료하기 전에 지정된 시간이 만료되면 예외 operation_timed_out throw됩니다.

wait_for_all

지정된 모든 에이전트가 작업을 완료할 때까지 기다립니다.

static void __cdecl wait_for_all(
    size_t count,
    _In_reads_(count) agent** _PAgents,
    _Out_writes_opt_(count) agent_status* _PStatus = NULL,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

매개 변수

count
배열 _PAgents에 있는 에이전트 포인터 수입니다.

_PAgents
기다릴 에이전트에 대한 포인터 배열입니다.

_PStatus
에이전트 상태 배열에 대한 포인터입니다. 각 상태 값은 메서드가 반환될 때 해당 에이전트의 상태를 나타냅니다.

_타임 아웃
대기할 최대 시간(밀리초)입니다.

설명

에이전트 작업이 완료된 경우 에이전트가 또는 상태를 입력합니다 agent_canceled agent_done .

매개 변수 _Timeout 에 상수가 COOPERATIVE_TIMEOUT_INFINITE아닌 값이 있는 경우 에이전트가 작업을 완료하기 전에 지정된 시간이 만료되면 예외 operation_timed_out throw됩니다.

wait_for_one

지정된 에이전트 중 하나가 작업을 완료할 때까지 기다립니다.

static void __cdecl wait_for_one(
    size_t count,
    _In_reads_(count) agent** _PAgents,
    agent_status& _Status,
    size_t& _Index,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

매개 변수

count
배열 _PAgents에 있는 에이전트 포인터 수입니다.

_PAgents
기다릴 에이전트에 대한 포인터 배열입니다.

_상태
에이전트 상태가 배치될 변수에 대한 참조입니다.

_Index
에이전트 인덱스가 배치될 변수에 대한 참조입니다.

_타임 아웃
대기할 최대 시간(밀리초)입니다.

설명

에이전트 작업이 완료된 경우 에이전트가 또는 상태를 입력합니다 agent_canceled agent_done .

매개 변수 _Timeout 에 상수가 COOPERATIVE_TIMEOUT_INFINITE아닌 값이 있는 경우 에이전트가 작업을 완료하기 전에 지정된 시간이 만료되면 예외 operation_timed_out throw됩니다.

참고 항목

concurrency 네임스페이스