public void Run(Worker worker) { while (worker.IsAlive) { _pool.AdjustPoolSizeIfNecessary(); _threadManager.Sleep(TimeSpan.FromSeconds(1.0)); } }
public override IQueue CreateQueueForWorker(Worker worker) { using (RWLock.AsWriter(_lock)) { QueueOfRunnables queue = new QueueOfRunnables(); _queues.Add(queue); return queue; } }
public void MarkAsFree(Worker worker) { Interlocked.Increment(ref _free); }
public void MarkAsUnavailable(Worker worker) { MarkAsBusy(worker); Interlocked.Decrement(ref _total); }
public void MarkAsBusy(Worker worker) { Interlocked.Decrement(ref _free); }
public void MarkAsAvailable(Worker worker) { Interlocked.Increment(ref _total); MarkAsFree(worker); }
public override IQueue CreateQueueForWorker(Worker worker) { return _queue; }
public WorkerMonitor(BusyWatcher busyWatcher, Worker worker) { _worker = worker; _busyWatcher = busyWatcher; }
public abstract IQueue CreateQueueForWorker(Worker worker);