에이전트 클래스
모든 독립 에이전트에 대한 기본 클래스로 사용되는 클래스입니다. 다른 에이전트로부터 상태를 숨기고 메시지 전달을 사용하여 상호 작용하는 데 사용됩니다.
구문
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();
agent(Scheduler& _PScheduler);
agent(ScheduleGroup& _PGroup);
매개 변수
_PScheduler
Scheduler
에이전트의 실행 작업이 예약된 개체입니다.
_PGroup
ScheduleGroup
에이전트의 실행 작업이 예약된 개체입니다. 사용된 Scheduler
개체는 일정 그룹에서 암시됩니다.
설명
런타임은 _PScheduler
또는 _PGroup
매개 변수를 지정하지 않는 경우 기본 스케줄러를 사용합니다.
~대리인
에이전트를 제거합니다.
virtual ~agent();
설명
터미널 상태(또는 agent_done
agent_canceled
)에 없는 에이전트를 삭제하는 것은 오류입니다. 이는 에이전트가 클래스에서 상속되는 클래스의 소멸자에서 agent
터미널 상태에 도달할 때까지 대기하여 방지할 수 있습니다.
취소
에이전트 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
에이전트의 주 작업을 나타냅니다. 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됩니다.