Exemplo n.º 1
0
        public ThreadWorker(Queue <Action> scheduler, ThreadMonitor threadResult)
        {
            Scheduler    = scheduler;
            ThreadResult = threadResult;
            IsFree       = true;
            var thread = new Thread(StartWork);

            ThreadId = thread.ManagedThreadId;

            thread.Start();
        }
Exemplo n.º 2
0
        public MyThreadPool(int maxPoolSize = 0)
        {
            Scheduler = new Queue <Action>();
            var poolSize = maxPoolSize > 0 && maxPoolSize < defaultPoolSize ? maxPoolSize : defaultPoolSize;

            ThreadPool = new ThreadWorker[poolSize];
            var threadMonitor = new ThreadMonitor(ThreadPool);

            for (var i = 0; i < poolSize; i++)
            {
                ThreadPool[i] = new ThreadWorker(Scheduler, threadMonitor);
            }
        }