IResourceManager 구조체

동시성 런타임의 리소스 관리자에 대한 인터페이스입니다. 스케줄러가 리소스 관리자와 통신하는 데 사용되는 인터페이스입니다.

구문

struct IResourceManager;

멤버

public 열거형

이름 설명
IResourceManager::OSVersion 운영 체제 버전을 나타내는 열거 형식입니다.

공용 메서드

이름 설명
IResourceManager::CreateNodeTopology 런타임의 디버그 빌드에만 존재하는 이 메서드는 구성과 일치하는 실제 하드웨어 없이 다양한 하드웨어 토폴로지에서 Resource Manager의 테스트를 용이하게 하도록 설계된 테스트 후크입니다. 런타임의 소매 빌드를 사용하면 이 메서드는 아무 작업도 수행하지 않고 반환됩니다.
IResourceManager::GetAvailableNodeCount 리소스 관리자에서 사용할 수 있는 노드의 수를 반환합니다.
IResourceManager::GetFirstNode 리소스 관리자를 통해 정의된 열거 순서에서 첫 번째 노드를 반환합니다.
IResourceManager::Reference Resource Manager 인스턴스에 대한 참조 수를 증분합니다.
IResourceManager::RegisterScheduler Resource Manager에 스케줄러를 등록합니다. 스케줄러가 등록되면 반환되는 인터페이스를 사용하여 ISchedulerProxy Resource Manager와 통신해야 합니다.
IResourceManager::Release Resource Manager 인스턴스의 참조 수를 줄입니다. Resource Manager는 참조 횟수가 1로 넘어갈 때 제거됩니다 0.

설명

CreateResourceManager 함수를 사용하여 단일 Resource Manager 인스턴스에 대한 인터페이스를 가져옵니다. 이 메서드는 Resource Manager에 대한 참조 수를 증가시키고, Resource Manager를 완료하면 IResourceManager::Release 메서드를 호출하여 참조를 해제해야 합니다. 일반적으로 만드는 각 스케줄러는 만드는 동안 이 메서드를 호출하고 Resource Manager가 종료된 후 참조를 해제합니다.

상속 계층 구조

IResourceManager

요구 사항

헤더: concrtrm.h

네임스페이스: 동시성

IResourceManager::CreateNodeTopology 메서드

런타임의 디버그 빌드에만 존재하는 이 메서드는 구성과 일치하는 실제 하드웨어 없이 다양한 하드웨어 토폴로지에서 Resource Manager의 테스트를 용이하게 하도록 설계된 테스트 후크입니다. 런타임의 소매 빌드를 사용하면 이 메서드는 아무 작업도 수행하지 않고 반환됩니다.

virtual void CreateNodeTopology(
    unsigned int nodeCount,
    _In_reads_(nodeCount) unsigned int* pCoreCount,
    _In_reads_opt_(nodeCount) unsigned int** pNodeDistance,
    _In_reads_(nodeCount) unsigned int* pProcessorGroups) = 0;

매개 변수

nodeCount
시뮬레이션되는 프로세서 노드의 수입니다.

pCoreCount
각 노드의 코어 수를 지정하는 배열입니다.

pNodeDistance
두 노드 사이의 노드 거리를 지정하는 행렬입니다. 이 매개 변수는 값을 NULL가질 수 있습니다.

pProcessorGroups
각 노드가 속한 프로세서 그룹을 지정하는 배열입니다.

설명

매개 변수에 값이 전달되었거나 매개 변수 nodeCount 에 값 0NULL이 있는 경우 pCoreCount invalid_argument throw됩니다.

프로세스에 다른 스케줄러가 있는 동안 이 메서드가 호출되면 invalid_operation throw됩니다.

IResourceManager::GetAvailableNodeCount 메서드

리소스 관리자에서 사용할 수 있는 노드의 수를 반환합니다.

virtual unsigned int GetAvailableNodeCount() const = 0;

Return Value

Resource Manager에서 사용할 수 있는 노드 수입니다.

IResourceManager::GetFirstNode 메서드

리소스 관리자를 통해 정의된 열거 순서에서 첫 번째 노드를 반환합니다.

virtual ITopologyNode* GetFirstNode() const = 0;

Return Value

Resource Manager에서 정의한 대로 열거형 순서의 첫 번째 노드입니다.

IResourceManager::OSVersion 열거형

운영 체제 버전을 나타내는 열거 형식입니다.

enum OSVersion;

IResourceManager::Reference 메서드

Resource Manager 인스턴스에 대한 참조 수를 증분합니다.

virtual unsigned int Reference() = 0;

Return Value

결과 참조 수입니다.

IResourceManager::RegisterScheduler 메서드

Resource Manager에 스케줄러를 등록합니다. 스케줄러가 등록되면 반환되는 인터페이스를 사용하여 ISchedulerProxy Resource Manager와 통신해야 합니다.

virtual ISchedulerProxy *RegisterScheduler(
    _Inout_ IScheduler* pScheduler,
    unsigned int version) = 0;

매개 변수

pScheduler
IScheduler 등록할 스케줄러에 대한 인터페이스입니다.

version
스케줄러가 Resource Manager와 통신하는 데 사용하는 통신 인터페이스의 버전입니다. 버전을 사용하면 Resource Manager가 통신 인터페이스를 발전시키는 동시에 스케줄러가 이전 기능에 액세스할 수 있습니다. Visual Studio 2010에 있는 Resource Manager 기능을 사용하려는 스케줄러는 버전을 CONCRT_RM_VERSION_1사용해야 합니다.

Return Value

ISchedulerProxy Resource Manager가 스케줄러와 연결한 인터페이스입니다. 스케줄러는 이 인터페이스를 사용하여 이 시점부터 Resource Manager와 통신해야 합니다.

설명

이 메서드를 사용하여 Resource Manager와의 통신을 시작합니다. 이 메서드는 스케줄러의 IScheduler 인터페이스를 ISchedulerProxy 인터페이스와 연결하고 사용자에게 다시 연결합니다. 반환된 인터페이스를 사용하여 스케줄러에서 사용할 실행 리소스를 요청하거나 Resource Manager를 사용하여 스레드를 구독할 수 있습니다. Resource Manager는 IScheduler::GetPolicy 메서드에서 반환된 스케줄러 정책의 정책 요소를 사용하여 스케줄러가 작업을 실행하는 데 필요한 스레드 유형을 결정합니다. SchedulerKind 정책 키에 값 UmsThreadDefault 이 있고 값이 정책에서 값 UmsThreadDefaultIScheduler 으로 다시 읽혀지는 경우 메서드에 전달된 인터페이스는 인터페이스여야 IUMSScheduler 합니다.

매개 변수에 값 NULL 이 있거나 매개 변수 pScheduler 가 통신 인터페이스에 version 유효한 버전이 아닌 경우 메서드는 예외를 throw invalid_argument 합니다.

IResourceManager::Release 메서드

Resource Manager 인스턴스의 참조 수를 줄입니다. Resource Manager는 참조 횟수가 1로 넘어갈 때 제거됩니다 0.

virtual unsigned int Release() = 0;

Return Value

결과 참조 수입니다.

참고 항목

concurrency 네임스페이스
ISchedulerProxy 구조체
IScheduler 구조체