示例#1
0
 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;
       }
 }
示例#3
0
 public void MarkAsFree(Worker worker)
 {
     Interlocked.Increment(ref _free);
 }
示例#4
0
 public void MarkAsUnavailable(Worker worker)
 {
     MarkAsBusy(worker);
       Interlocked.Decrement(ref _total);
 }
示例#5
0
 public void MarkAsBusy(Worker worker)
 {
     Interlocked.Decrement(ref _free);
 }
示例#6
0
 public void MarkAsAvailable(Worker worker)
 {
     Interlocked.Increment(ref _total);
       MarkAsFree(worker);
 }
 public override IQueue CreateQueueForWorker(Worker worker)
 {
     return _queue;
 }
示例#8
0
 public WorkerMonitor(BusyWatcher busyWatcher, Worker worker)
 {
     _worker = worker;
       _busyWatcher = busyWatcher;
 }
示例#9
0
 public abstract IQueue CreateQueueForWorker(Worker worker);