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)
110 : new FixedIntervalCyclePolicy());
111
112 DMContainer.RegisterSingleton<IDreamineThreadScheduler>(
113 new DreamineThreadScheduler());
114
115 DMContainer.RegisterSingleton<IDreamineThreadManager>(
116 new DreamineThreadManager(
117 DMContainer.Resolve<IThreadCoreAllocator>(),
118 DMContainer.Resolve<IThreadCyclePolicy>(),
119 DMContainer.Resolve<IDreamineThreadScheduler>(),
120 ResolveOptional<IThreadAffinityService>(),
121 ResolveOptional<ITimerResolutionService>(),
122 ResolveOptional<IDreamineLogger>()));
123 }