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
에 값 0
NULL
이 있는 경우 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
이 있고 값이 정책에서 값 UmsThreadDefault
IScheduler
으로 다시 읽혀지는 경우 메서드에 전달된 인터페이스는 인터페이스여야 IUMSScheduler
합니다.
매개 변수에 값 NULL
이 있거나 매개 변수 pScheduler
가 통신 인터페이스에 version
유효한 버전이 아닌 경우 메서드는 예외를 throw invalid_argument
합니다.
IResourceManager::Release 메서드
Resource Manager 인스턴스의 참조 수를 줄입니다. Resource Manager는 참조 횟수가 1로 넘어갈 때 제거됩니다 0
.
virtual unsigned int Release() = 0;
Return Value
결과 참조 수입니다.