public int ComputeWps(Config config) { return(ThreadPoolConfig.ScaledPoolSize( config.GetInt("pool-size-min"), config.GetDouble("pool-size-factor"), config.GetInt("pool-size-max"))); }
internal ThreadPool(ThreadPoolConfig config) { config.Validate(); SetThreadingRange(config); Name = config.Name; MultiThreadingCapacity = config.MultiThreadingCapacity; _taskQueueController = config.TaskQueueController; }
private static int ComputeWorkerPoolSize(Config config) { if (config == null) return ThreadPoolConfig.ScaledPoolSize(2, 1.0, 2); return ThreadPoolConfig.ScaledPoolSize( floor: config.GetInt("pool-size-min"), scalar: config.GetDouble("pool-size-factor"), ceiling: config.GetInt("pool-size-max")); }
/// <summary> /// Creates new instance of the <see cref="ITinyThreadPool" />. /// </summary> /// <param name="config">The configuration.</param> /// <returns>New instance of the <see cref="ITinyThreadPool" />.</returns> public static ITinyThreadPool Create(Action <IThreadPoolConfig> config) { var threadPoolConfig = new ThreadPoolConfig(); config(threadPoolConfig); var threadPool = new ThreadPool(threadPoolConfig); threadPool.Start(); return(threadPool); }
public int ComputeWps(Config config) { if (config.IsNullOrEmpty()) { return(ThreadPoolConfig.ScaledPoolSize(2, 1.0, 2)); } return(ThreadPoolConfig.ScaledPoolSize( config.GetInt("pool-size-min", 0), config.GetDouble("pool-size-factor", 0), config.GetInt("pool-size-max", 0))); }
private static int ComputeWorkerPoolSize(Config config) { if (config.IsNullOrEmpty()) { return(ThreadPoolConfig.ScaledPoolSize(2, 1.0, 2)); } return(ThreadPoolConfig.ScaledPoolSize( floor: config.GetInt("pool-size-min", 0), scalar: config.GetDouble("pool-size-factor", 0), ceiling: config.GetInt("pool-size-max", 0))); }
private void SetThreadingRange(ThreadPoolConfig config) { switch (config.MultiThreadingCapacity) { case MultiThreadingCapacity.Global: MinThreads = config.MinThreads; MaxThreads = config.MaxThreads; break; case MultiThreadingCapacity.PerProcessor: int processorCount = Environment.ProcessorCount; MinThreads = processorCount * config.MinThreads; MaxThreads = processorCount * config.MaxThreads; break; default: string error = string.Format( "Invalid MultiThreadingCapacity: {0}", config.MultiThreadingCapacity); throw new ArgumentOutOfRangeException(error); } }
/// <summary> /// /// </summary> public AppConfig() { this.TypeAliases = new Dictionary <string, string>(16); this.Modules = new Dictionary <string, string>(8); this.ThreadPool = new ThreadPoolConfig(); }