다음을 통해 공유


스케줄러 정책

이 문서에서는 동시성 런타임에서 스케줄러 정책의 역할에 대해 설명합니다.스케줄러 정책은 스케줄러에서 작업을 관리할 때 사용하는 전략을 제어합니다.예를 들어 일부 작업을 실행할 수 있어야 하는 응용 프로그램을 고려 THREAD_PRIORITY_NORMAL 및 다른 작업을 실행할 때 THREAD_PRIORITY_HIGHEST.스케줄러 인스턴스 두 개를 만들 수 있습니다: 하나 지정의 ContextPriority 정책을 THREAD_PRIORITY_NORMAL 및 수 동일한 정책을 지정 하는 THREAD_PRIORITY_HIGHEST.

정책 스케줄러를 사용 하 여 사용 가능한 프로세싱 리소스가 나누고 각 스케줄러에는 고정 된 리소스 집합을 할당 수 있습니다.예를 들어 프로세서를 최대 네 개로 확장하는 병렬 알고리즘을 가정해 봅니다.작업에서 최대 네 개의 프로세서를 동시에 사용하도록 제한하는 스케줄러 정책을 만들 수 있습니다.

팁

동시성 런타임 기본 스케줄러를 제공합니다.따라서 응용 프로그램에서을 만들 필요가 없습니다.작업 스케줄러를 사용하면 응용 프로그램의 성능을 세부적으로 조정할 수 있으므로 동시성 런타임을 처음 사용하는 경우 PPL(병렬 패턴 라이브러리) 또는 비동기 에이전트 라이브러리에서 시작하는 것이 좋습니다.

사용 하는 경우는 concurrency::CurrentScheduler::Create, concurrency::Scheduler::Create, 또는 concurrency::Scheduler::SetDefaultSchedulerPolicy 제공 스케줄러 인스턴스를 만드는 메서드는 concurrency::SchedulerPolicy 스케줄러의 동작을 지정 하는 키-값 쌍의 컬렉션을 포함 하는 개체입니다.SchedulerPolicy 생성자는 다양한 수의 인수를 사용합니다.첫 번째 인수는 지정할 정책 요소의 수입니다.나머지 인수는 각 정책 요소의 키/값 쌍입니다.다음 예제에서는 세 개의 정책 요소를 지정하는 SchedulerPolicy 개체를 만듭니다.런타임에서 기본값이 지정 되지 않은 정책 키를 사용 합니다.

SchedulerPolicy policy(3,       
   MinConcurrency, 2,
   MaxConcurrency, 4,
   ContextPriority, THREAD_PRIORITY_HIGHEST
);

Concurrency::PolicyElementKey 열거형은 작업 스케줄러와 연관 된 정책 키를 정의 합니다.다음 표에서는 정책 키 및 런타임에서 각 정책 키에 사용하는 기본값에 대해 설명합니다.

정책 키

설명

기본값

SchedulerKind

A concurrency::SchedulerType 스레드를 사용 하 여 작업을 예약 유형을 지정 하는 값입니다.

ThreadScheduler(일반 스레드 사용).이 키의 유효한 값이 있습니다.

MaxConcurrency

스케줄러에서 사용하는 최대 동시성 리소스 수를 지정하는 unsigned int 값입니다.

concurrency::MaxExecutionResources

MinConcurrency

스케줄러에서 사용하는 최소 동시성 리소스 수를 지정하는 unsigned int 값입니다.

1

TargetOversubscriptionFactor

각 처리 리소스에 할당할 스레드의 수를 지정하는 unsigned int 값입니다.

1

LocalContextCacheSize

각 가상 프로세서의 로컬 큐에 캐시할 수 있는 최대 컨텍스트 수를 지정하는 unsigned int 값입니다.

8

ContextStackSize

각 컨텍스트에 대해 예약할 스택 크기(KB)를 지정하는 unsigned int 값입니다.

0(기본 스택 크기 사용)

ContextPriority

각 컨텍스트의 스레드 우선 순위를 지정하는 int 값입니다.이 값은 SetThreadPriority 또는 INHERIT_THREAD_PRIORITY에 전달할 수 있는 임의의 값이 될 수 있습니다.

THREAD_PRIORITY_NORMAL

SchedulingProtocol

A concurrency::SchedulingProtocolType 를 사용 하는 예약 알고리즘을 지정 하는 값입니다.

EnhanceScheduleGroupLocality

DynamicProgressFeedback

A concurrency::DynamicProgressFeedbackType 리소스 통계를 기반으로 상황에 따라 균형을 다시 설정할지 여부를 지정 하는 값입니다.

참고 이 정책을 설정 하지 않습니다 ProgressFeedbackDisabled 는 런타임에서 사용 하기 위해 예약 되어 있기 때문에.

ProgressFeedbackEnabled

각 스케줄러는 작업을 예약할 때 자체의 정책을 사용합니다.한 스케줄러와 연관 된 정책 동작 다른 모든 스케줄러에 영향을 주지 않습니다.또한 Scheduler 개체를 만든 후에는 스케줄러 정책을 변경할 수 없습니다.

중요중요

런타임에서 만든 스레드에 대한 특성을 제어할 때는 스케줄러 정책만 사용하십시오.스레드 선호도 나는 정의 되지 않은 동작이 발생할 수 있기 때문에 런타임에 의해 만들어진 스레드의 우선 순위를 변경 하지 마십시오.

기본 스케줄러를 명시적으로 만들지 않으면 런타임에서 기본 스케줄러가 자동으로 만들어집니다.기본 스케줄러 응용 프로그램에서 사용할 수 있지만, 호출을 사용 하 여 해당 스케줄러에 대 한 정책을 지정할 경우는 concurrency::Scheduler::SetDefaultSchedulerPolicy 병렬 작업을 예약 하기 전에 메서드.Scheduler::SetDefaultSchedulerPolicy 메서드를 호출하지 않으면 런타임에서는 이 표의 기본 정책 값을 사용합니다.

사용은 concurrency::CurrentScheduler::GetPolicyconcurrency::Scheduler::GetPolicy 스케줄러 정책의 복사본을 검색 하는 방법.이러한 메서드로부터 받는 정책 값은 스케줄러를 만들 때 지정하는 정책 값과 다를 수 있습니다.

예제

정책을 특정 스케줄러를 사용 하 여 스케줄러의 동작을 제어 하는 예제를 보려면를 참조 하십시오 방법: 특정 스케줄러 정책 지정방법: 특정 스케줄러 정책을 사용하는 에이전트 만들기.

참고 항목

작업

방법: 특정 스케줄러 정책 지정

방법: 특정 스케줄러 정책을 사용하는 에이전트 만들기

개념

작업 스케줄러(동시성 런타임)