ScheduleGroup 클래스

일정 그룹에 대한 추상화를 나타냅니다. 일정 그룹은 다른 그룹으로 이동하기 전에 동일한 그룹의 다른 작업을 실행하여 시간적으로 또는 동일한 NUMA 노드 또는 실제 소켓에서 동일한 그룹 내의 여러 항목을 실행하여 공간적으로 서로 가깝게 예약하면 도움이 되는 관련된 작업 집합을 구성합니다.

구문

class ScheduleGroup;

멤버

보호된 생성자

속성 설명
~ScheduleGroup 소멸자

공용 메서드

이름 설명
ID 그룹이 속한 스케줄러 내에서 고유한 일정 그룹의 식별자를 반환합니다.
참조 일정 그룹 참조 횟수를 증가시킵니다.
릴리스 일정 그룹 참조 횟수를 감소시킵니다.
ScheduleTask 일정 그룹 내에서 경량 작업을 예약합니다.

상속 계층 구조

ScheduleGroup

요구 사항

헤더: concrt.h

네임스페이스: 동시성

ID

그룹이 속한 스케줄러 내에서 고유한 일정 그룹의 식별자를 반환합니다.

virtual unsigned int Id() const = 0;

Return Value

그룹이 속한 스케줄러 내에서 고유한 일정 그룹의 식별자입니다.

operator delete

개체에 대한 ScheduleGroup 모든 외부 참조가 해제되면 런타임에 의해 내부적으로 개체가 제거됩니다. 개체를 명시적으로 삭제할 수 없습니다.

void operator delete(
    void* _PObject);

void operator delete(
    void* _PObject,
    int,
const char *,
    int);

매개 변수

_PObject
삭제할 개체에 대한 포인터입니다.

참조

일정 그룹 참조 횟수를 증가시킵니다.

virtual unsigned int Reference() = 0;

Return Value

새로 증분된 참조 수입니다.

설명

일반적으로 컴퍼지션에 대한 일정 그룹의 수명을 관리하는 데 사용됩니다. 일정 그룹의 참조 수가 0으로 떨어지면 런타임에 의해 일정 그룹이 삭제됩니다. CurrentScheduler::CreateScheduleGroup 메서드 또는 Scheduler::CreateScheduleGroup 메서드를 사용하여 만든 일정 그룹은 참조 횟수 1로 시작됩니다.

Release

일정 그룹 참조 횟수를 감소시킵니다.

virtual unsigned int Release() = 0;

Return Value

새로 감소된 참조 수입니다.

설명

일반적으로 컴퍼지션에 대한 일정 그룹의 수명을 관리하는 데 사용됩니다. 일정 그룹의 참조 수가 0으로 떨어지면 런타임에 의해 일정 그룹이 삭제됩니다. Release 메서드를 사용하여 배치된 추가 참조와 생성 참조 횟수를 제거하기 위해 Reference 메서드를 특정 횟수 만큼 호출한 후에는 더 이상 일정 그룹을 이용할 수 없습니다. 이렇게 하면 정의되지 않은 동작이 발생합니다.

일정 그룹은 특정 스케줄러 인스턴스와 연결됩니다. 스케줄러에 대한 모든 참조는 스케줄러에서 소멸될 수 있기 때문에 스케줄러에 대한 모든 참조가 해제되기 전에 일정 그룹에 대한 모든 참조가 해제되었는지 확인해야 합니다. 그렇지 않으면 정의되지 않은 동작이 발생합니다.

~ScheduleGroup

virtual ~ScheduleGroup();

ScheduleTask

일정 그룹 내에서 경량 작업을 예약합니다.

virtual void ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data) = 0;

매개 변수

_프로시저
경량 작업의 본문을 수행하기 위해 실행할 함수에 대한 포인터입니다.

_데이터
작업 본문에 매개 변수로 전달될 데이터에 대한 void 포인터입니다.

설명

메서드를 ScheduleTask 호출하면 태스크가 실행된 후 적절한 시간에 런타임에서 제거되는 일정 그룹에 대한 참조 수가 암시적으로 배치됩니다.

참고 항목

concurrency 네임스페이스
CurrentScheduler 클래스
Scheduler 클래스
작업 Scheduler