ISchedulerProxy::RequestInitialVirtualProcessors 메서드

가상 프로세서 루트의 초기 할당을 요청합니다.모든 가상 프로세서 루트는 스케줄러에 대해 수행할 수 있는 한 스레드만 실행할 수 있는 기능을 나타냅니다.

virtual IExecutionResource * RequestInitialVirtualProcessors(
   bool doSubscribeCurrentThread
) =0;

매개 변수

  • doSubscribeCurrentThread
    리소스 할당 중에 현재 스레드와 계정을 예약할지 여부.

반환 값

매개 변수 doSubscribeCurrentThread가 값 true를 갖는 경우 현재 스레드에 대한 IExecutionResource 인터페이스입니다.값이 false일 경우 메서드가 NULL을 반환합니다.

설명

스케줄러는 모든 작업을 실행하기 때문에 이 메서드를 사용하여 리소스 관리자에서 가상 프로세서 루트를 요청해야 합니다.리소스 관리자는 IScheduler::GetPolicy를 사용하여 스케줄러 정책에 액세스하고 정책 키 MinConcurrency, MaxConcurrencyTargetOversubscriptionFactor에 대한 값을 사용하여 초기에 스케줄러에 할당할 하드웨어 수와 모든 하드웨어 스레드를 만들기 위한 가상 프로세서 루트 수를 결정합니다.스케줄러의 초기 할당을 결정하는 데 사용되는 스케줄러 정책에 대한 자세한 내용은 PolicyElementKey를 참조하십시오.

리소스 관리자는 가상 프로세서 루트 목록으로 메서드 IScheduler::AddVirtualProcessors를 호출하여 스케줄러에 대한 리소스를 부여합니다.이 메서드가 반환되기 전에 메서드가 스케줄러에 콜백으로 호출됩니다.

스케줄러가 매개 변수 doSubscribeCurrentThread를 true로 설정하여 현재 스레드에 대한 구독을 요청한 경우 메서드는 IExecutionResource 인터페이스를 반환합니다.구독은 IExecutionResource::Remove 메서드를 사용하여 나중에 종료해야 합니다.

어떤 스레드가 선택되었는지 확인할 때 리소스 관리자는 프로세서 노드 선호도를 최적화하려고 시도합니다.구독이 현재 스레드에 대해 요청된 경우 현재 스레드는 이 스케줄러에 할당된 작업에 필요한 것임을 나타냅니다.이런 경우 할당된 가상 프로세스 루트는 가능한 경우 현재 스레드가 실행되는 프로세서 로드에 있습니다.

구독하는 스레드의 동작은 내부 하드웨어 스레드의 구독 수준을 1씩 증가시킵니다.구독 수준은 구독이 종료되면 하나씩 줄어듭니다.구독 수준에 대한 자세한 내용은 IExecutionResource::CurrentSubscriptionLevel을 참조하십시오.

요구 사항

헤더: concrtrm.h

네임 스페이스: 동시성

참고 항목

참조

ISchedulerProxy 구조체