Dreamine.Threading
1.0.1
이 패키지는 .NET ThreadPool이나 Task Parallel Library를 대체하려는 목적이 아닙니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
AdaptiveCpuCyclePolicy.cs
이 파일의 문서화 페이지로 가기
1
using
Dreamine.Threading.Interfaces
;
2
using
Dreamine.Threading.Models
;
3
4
namespace
Dreamine.Threading.Policies
;
5
14
public
sealed
class
AdaptiveCpuCyclePolicy
:
IThreadCyclePolicy
15
{
24
private
readonly
ICpuUsageProvider
_cpuUsageProvider
;
25
50
public
AdaptiveCpuCyclePolicy
(
ICpuUsageProvider
cpuUsageProvider)
51
{
52
_cpuUsageProvider
= cpuUsageProvider ??
throw
new
ArgumentNullException(nameof(cpuUsageProvider));
53
}
54
103
public
int
GetDelayMs
(
104
DreamineThreadOptions
options,
105
DreamineThreadCoreAssignment
assignment,
106
DreamineThreadCycleContext
context)
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
116
: options.
OverflowPollingIntervalMs
;
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
}
153
}
Dreamine.Threading.Interfaces
Definition
ICpuInfoProvider.cs:1
Dreamine.Threading.Models
Definition
DreamineThreadCoreAssignment.cs:1
Dreamine.Threading.Policies
Definition
AdaptiveCpuCyclePolicy.cs:4
Dreamine.Threading.Interfaces.ICpuUsageProvider
Definition
ICpuUsageProvider.cs:12
Dreamine.Threading.Interfaces.IThreadCyclePolicy
Definition
IThreadCyclePolicy.cs:14
Dreamine.Threading.Models.DreamineThreadCoreAssignment
Definition
DreamineThreadCoreAssignment.cs:12
Dreamine.Threading.Models.DreamineThreadCoreAssignment.IsOverflowPolling
bool IsOverflowPolling
Definition
DreamineThreadCoreAssignment.cs:41
Dreamine.Threading.Models.DreamineThreadCycleContext
Definition
DreamineThreadCycleContext.cs:12
Dreamine.Threading.Models.DreamineThreadOptions
Definition
DreamineThreadOptions.cs:12
Dreamine.Threading.Models.DreamineThreadOptions.IntervalMs
int IntervalMs
Definition
DreamineThreadOptions.cs:41
Dreamine.Threading.Models.DreamineThreadOptions.UseAdaptiveCpuDelay
bool UseAdaptiveCpuDelay
Definition
DreamineThreadOptions.cs:111
Dreamine.Threading.Models.DreamineThreadOptions.OverflowPollingIntervalMs
int OverflowPollingIntervalMs
Definition
DreamineThreadOptions.cs:81
Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy.AdaptiveCpuCyclePolicy
AdaptiveCpuCyclePolicy(ICpuUsageProvider cpuUsageProvider)
Definition
AdaptiveCpuCyclePolicy.cs:50
Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy._cpuUsageProvider
readonly ICpuUsageProvider _cpuUsageProvider
Definition
AdaptiveCpuCyclePolicy.cs:24
Dreamine.Threading.Policies.AdaptiveCpuCyclePolicy.GetDelayMs
int GetDelayMs(DreamineThreadOptions options, DreamineThreadCoreAssignment assignment, DreamineThreadCycleContext context)
Definition
AdaptiveCpuCyclePolicy.cs:103
Policies
AdaptiveCpuCyclePolicy.cs
다음에 의해 생성됨 :
1.17.0