示例#1
0
 public int ComputeWps(Config config)
 {
     return(ThreadPoolConfig.ScaledPoolSize(
                config.GetInt("pool-size-min"),
                config.GetDouble("pool-size-factor"),
                config.GetInt("pool-size-max")));
 }
示例#2
0
 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"));
        }
示例#4
0
        /// <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);
        }
示例#5
0
        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)));
        }
示例#7
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);
                }
            }
示例#8
0
 /// <summary>
 ///
 /// </summary>
 public AppConfig()
 {
     this.TypeAliases = new Dictionary <string, string>(16);
     this.Modules     = new Dictionary <string, string>(8);
     this.ThreadPool  = new ThreadPoolConfig();
 }