Dreamine.Threading 1.0.1
이 패키지는 .NET ThreadPool이나 Task Parallel Library를 대체하려는 목적이 아닙니다.
로딩중...
검색중...
일치하는것 없음
DreamineThreadingRegistration.cs
이 파일의 문서화 페이지로 가기
1using System;
2using Dreamine.Logging.Interfaces;
3using Dreamine.MVVM.Core;
9
11
21{
46 public static void Register(Action<DreamineThreadingOptions>? configure = null)
47 {
48 var options = new DreamineThreadingOptions();
49 configure?.Invoke(options);
50
51 ICpuUsageProvider? cpuUsageProvider = DMContainer.IsRegistered<ICpuUsageProvider>()
52 ? DMContainer.Resolve<ICpuUsageProvider>()
53 : null;
54
55 Register(options, cpuUsageProvider);
56 }
57
98 public static void Register(
100 ICpuUsageProvider? cpuUsageProvider = null)
101 {
102 ArgumentNullException.ThrowIfNull(options);
103
104 DMContainer.RegisterSingleton<IThreadCoreAllocator>(
105 new AutoCoreAllocator());
106
107 DMContainer.RegisterSingleton<IThreadCyclePolicy>(
108 options.UseAdaptiveCpuPolicy && cpuUsageProvider is not null
109 ? new AdaptiveCpuCyclePolicy(cpuUsageProvider)
111
112 DMContainer.RegisterSingleton<IDreamineThreadScheduler>(
114
115 DMContainer.RegisterSingleton<IDreamineThreadManager>(
117 DMContainer.Resolve<IThreadCoreAllocator>(),
118 DMContainer.Resolve<IThreadCyclePolicy>(),
119 DMContainer.Resolve<IDreamineThreadScheduler>(),
120 ResolveOptional<IThreadAffinityService>(),
121 ResolveOptional<ITimerResolutionService>(),
122 ResolveOptional<IDreamineLogger>()));
123 }
124
157 private static T? ResolveOptional<T>() where T : class
158 {
159 return DMContainer.IsRegistered<T>()
160 ? DMContainer.Resolve<T>()
161 : null;
162 }
163}
static void Register(DreamineThreadingOptions options, ICpuUsageProvider? cpuUsageProvider=null)
static void Register(Action< DreamineThreadingOptions >? configure=null)