public ThreadWorker(Queue <Action> scheduler, ThreadMonitor threadResult) { Scheduler = scheduler; ThreadResult = threadResult; IsFree = true; var thread = new Thread(StartWork); ThreadId = thread.ManagedThreadId; thread.Start(); }
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); } }