다음을 통해 공유


ParallelOptions.MaxDegreeOfParallelism 속성

정의

ParallelOptions 인스턴스에서 사용되는 동시 작업의 최대 수를 가져오거나 설정합니다.

public:
 property int MaxDegreeOfParallelism { int get(); void set(int value); };
public int MaxDegreeOfParallelism { get; set; }
member this.MaxDegreeOfParallelism : int with get, set
Public Property MaxDegreeOfParallelism As Integer

속성 값

Int32

병렬 처리의 최대 수준을 나타내는 정수입니다.

예외

속성을 0 또는 -1보다 작은 값으로 설정하는 경우

설명

이 속성은 이 MaxDegreeOfParallelism ParallelOptions 인스턴스를 전달하는 메서드 호출에 의해 Parallel 실행되는 동시 작업 수에 영향을 줍니다. 양수 속성 값은 동시 작업 수를 설정 값으로 제한합니다. -1인 경우 동시 실행 작업 수에는 제한이 없습니다(메서드를 제외하고 ForEachAsync -1이 의미 ProcessorCount함).

기본적으로 For ForEach 기본 스케줄러가 제공하는 스레드 수를 활용하므로 기본값에서 변경 MaxDegreeOfParallelism 하면 사용되는 동시 작업 수만 제한됩니다.

일반적으로 이 설정을 수정할 필요가 없습니다. 그러나 다음과 같은 고급 사용 시나리오에서 명시적으로 설정하도록 선택할 수 있습니다.

  • 사용 중인 특정 알고리즘이 특정 수의 코어를 초과하여 확장되지 않는다는 것을 알고 있는 경우. 추가 코어에서 주기를 낭비하지 않도록 속성을 설정할 수 있습니다.

  • 여러 알고리즘을 동시에 실행하고 각 알고리즘이 활용할 수 있는 시스템의 양을 수동으로 정의하려는 경우 각각에 MaxDegreeOfParallelism 대한 값을 설정할 수 있습니다.

  • 스레드 풀의 추론이 적절한 수의 스레드를 확인할 수 없는 경우 너무 많은 스레드를 삽입할 수 있습니다. 예를 들어 장기 실행 루프 본문 반복에서 스레드 풀은 적절한 진행률 또는 라이브 잠금 또는 교착 상태의 차이를 알리지 못할 수 있으며 성능을 향상시키기 위해 추가된 스레드를 회수하지 못할 수 있습니다. 이 경우 적절한 수 이상의 스레드를 사용하지 않도록 속성을 설정할 수 있습니다.

적용 대상