public static TaskPool CreateScavengingTaskPool(Action toRun, TaskPoolOptions options)
        {
            MethodContract.NotNull(toRun, nameof(toRun));
            ScavengingTaskPoolRunner runner = new ScavengingTaskPoolRunner(toRun);
            TaskPool pool = new TaskPool(runner.Run, options);

            runner.pool = pool;
            return(pool);
        }
Exemplo n.º 2
0
        private void Setup(Func <T> listener, Action <T> handler, ServerTaskPoolOptions options)
        {
            TaskPoolOptions poolOpts = new TaskPoolOptions();

            poolOpts.MaxActiveWorkers   = options.MaxActiveWorkers;
            poolOpts.MaxWaitingRequests = options.MaxWaitingAccepts;
            poolOpts.Timeout            = options.Timeout;
            this.runner = new ServerRunner <T>(listener, handler, options.MaxWaitingRequests);
            this.pool   = ScavengingTaskPoolRunner.CreateScavengingTaskPool(runner.Run, poolOpts);
        }
Exemplo n.º 3
0
        private void Setup(Func <T> listener, Action <T> handler, ServerTaskPoolOptions options)
        {
            TaskPoolOptions poolOpts = new TaskPoolOptions();

            poolOpts.MaxActiveWorkers   = options.MaxActiveListenerWorkers;
            poolOpts.MaxWaitingRequests = options.MaxWaitingAccepts;
            poolOpts.Timeout            = options.Timeout;

            this.eventer      = new HandoffEvent <T>(listener, handler, options.MaxWaitingRequests);
            this.handle       = eventer.Handle;
            this.listenerPool = ScavengingTaskPoolRunner.CreateScavengingTaskPool(eventer.Listen, poolOpts);

            this.handlerThreads         = options.MaxActiveHandlerWorkers;
            poolOpts                    = new TaskPoolOptions();
            poolOpts.MaxActiveWorkers   = this.handlerThreads;
            poolOpts.MaxWaitingRequests = options.MaxWaitingRequests;
            poolOpts.Timeout            = new Timeout(0);
            this.handlerPool            = new TaskPool(this.Forever, poolOpts);
        }