Dreamine.Threading 1.0.1
이 패키지는 .NET ThreadPool이나 Task Parallel Library를 대체하려는 목적이 아닙니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy 클래스 참조sealed

더 자세히 ...

Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy에 대한 상속 다이어그램 :
Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy에 대한 협력 다이어그램:

Public 멤버 함수

 AdaptiveCpuCyclePolicy (ICpuUsageProvider cpuUsageProvider)
int GetDelayMs (DreamineThreadOptions options, DreamineThreadCoreAssignment assignment, DreamineThreadCycleContext context)

Private 속성

readonly ICpuUsageProvider _cpuUsageProvider

상세한 설명

CPU 사용률에 따라 실행 지연을 늘리는 적응형 주기 정책을 제공합니다.

AdaptiveCpuCyclePolicy.cs 파일의 14 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ AdaptiveCpuCyclePolicy()

Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy.AdaptiveCpuCyclePolicy ( ICpuUsageProvider cpuUsageProvider)
inline

T:Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy 클래스의 새 인스턴스를 초기화합니다.

매개변수
cpuUsageProvider전체 CPU 사용률을 제공할 서비스입니다.
예외
ArgumentNullExceptioncpuUsageProvidernull일 때 발생합니다.

AdaptiveCpuCyclePolicy.cs 파일의 50 번째 라인에서 정의되었습니다.

51 {
52 _cpuUsageProvider = cpuUsageProvider ?? throw new ArgumentNullException(nameof(cpuUsageProvider));
53 }

다음을 참조함 : _cpuUsageProvider.

멤버 함수 문서화

◆ GetDelayMs()

int Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy.GetDelayMs ( DreamineThreadOptions options,
DreamineThreadCoreAssignment assignment,
DreamineThreadCycleContext context )
inline

오버플로·고정 간격·CPU 사용률 규칙에 따라 다음 주기 지연을 계산합니다.

매개변수
options간격 및 적응형 지연 설정입니다.
assignment현재 코어 및 오버플로 할당입니다.
context현재 주기 컨텍스트이며 계약 검증을 위해 필요합니다.
반환값
다음 주기 전 대기할 0~5밀리초 또는 구성된 간격입니다.
예외
ArgumentNullException인수 중 하나가 null일 때 발생합니다.

Dreamine.Threading.Interfaces.IThreadCyclePolicy를 구현.

AdaptiveCpuCyclePolicy.cs 파일의 103 번째 라인에서 정의되었습니다.

107 {
108 ArgumentNullException.ThrowIfNull(options);
109 ArgumentNullException.ThrowIfNull(assignment);
110 ArgumentNullException.ThrowIfNull(context);
111
112 if (assignment.IsOverflowPolling)
113 {
114 return options.OverflowPollingIntervalMs < 0
115 ? 100
117 }
118
119 if (options.IntervalMs > 0)
120 {
121 return options.IntervalMs;
122 }
123
124 if (options.IntervalMs < 0)
125 {
126 return 10;
127 }
128
129 if (!options.UseAdaptiveCpuDelay)
130 {
131 return 0;
132 }
133
134 var cpuUsage = _cpuUsageProvider.GetTotalCpuUsagePercent();
135
136 if (cpuUsage >= 70)
137 {
138 return 5;
139 }
140
141 if (cpuUsage >= 50)
142 {
143 return 3;
144 }
145
146 if (cpuUsage >= 30)
147 {
148 return 1;
149 }
150
151 return 0;
152 }

다음을 참조함 : _cpuUsageProvider, Dreamine.Threading.Models.DreamineThreadOptions.IntervalMs, Dreamine.Threading.Models.DreamineThreadCoreAssignment.IsOverflowPolling, Dreamine.Threading.Models.DreamineThreadOptions.OverflowPollingIntervalMs, Dreamine.Threading.Models.DreamineThreadOptions.UseAdaptiveCpuDelay.

멤버 데이터 문서화

◆ _cpuUsageProvider

readonly ICpuUsageProvider Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy._cpuUsageProvider
private

cpu Usage Provider 값을 보관합니다.

AdaptiveCpuCyclePolicy.cs 파일의 24 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AdaptiveCpuCyclePolicy(), GetDelayMs().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: