/// <summary> /// Устанавливает новый балансер, заставляет завершится старый. /// </summary> /// <remarks> /// Балансер сделан частью трид-пула (композиция) для того что бы время жизни балансера не превысила времени жизни /// самого пула. /// Т.к. это особенность данной реализации - я и не стал выносить его под интерфейс /// </remarks> /// <param name="balancer">Новый балансер</param> internal void SetPerformanceBalancer(PerformanceBalancer balancer, PerformanceBalanceSettings settings) { CancelPerformanceBalancer(); if (balancer != null) { balancerThread = new PerformanceBalancerThread(balancer, settings); } }
/// <summary> /// Создаёт пул в соответствии с настройками /// </summary> /// <returns>Новый пул</returns> public ISimpleThreadPool Create() { var threadCollection = new ThreadCollection(Settings); var result = new SimpleThreadPool(Settings, threadCollection); var strategies = PerformanceBalanceSettings.PerformanceBalancerStrategies ?? new List <IPerformanceBalancerStrategy>(); if (strategies.Count > 0) { var balancer = new PerformanceBalancer(result, result, PerformanceBalanceSettings); result.SetPerformanceBalancer(balancer, PerformanceBalanceSettings); } return(result); }