Mercurial > pub > ImplabNet
comparison Implab/Parallels/WorkerPool.cs @ 35:2880242f987a diagnostics
initial log capabilities
| author | cin | 
|---|---|
| date | Mon, 14 Apr 2014 18:25:26 +0400 | 
| parents | dabf79fde388 | 
| children | 313f708a50e9 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 34:dabf79fde388 | 35:2880242f987a | 
|---|---|
| 2 using System.Collections.Generic; | 2 using System.Collections.Generic; | 
| 3 using System.Linq; | 3 using System.Linq; | 
| 4 using System.Text; | 4 using System.Text; | 
| 5 using System.Threading; | 5 using System.Threading; | 
| 6 using System.Diagnostics; | 6 using System.Diagnostics; | 
| 7 using Implab.Diagnostics; | |
| 7 | 8 | 
| 8 namespace Implab.Parallels { | 9 namespace Implab.Parallels { | 
| 9 public class WorkerPool : DispatchPool<Action> { | 10 public class WorkerPool : DispatchPool<Action> { | 
| 10 | 11 | 
| 11 MTQueue<Action> m_queue = new MTQueue<Action>(); | 12 MTQueue<Action> m_queue = new MTQueue<Action>(); | 
| 39 if (IsDisposed) | 40 if (IsDisposed) | 
| 40 throw new ObjectDisposedException(ToString()); | 41 throw new ObjectDisposedException(ToString()); | 
| 41 | 42 | 
| 42 var promise = new Promise<T>(); | 43 var promise = new Promise<T>(); | 
| 43 | 44 | 
| 45 var caller = LogContext.Current; | |
| 46 | |
| 44 EnqueueTask(delegate() { | 47 EnqueueTask(delegate() { | 
| 48 Log.Transfer(caller); | |
| 45 try { | 49 try { | 
| 46 promise.Resolve(task()); | 50 promise.Resolve(task()); | 
| 47 } catch (Exception e) { | 51 } catch (Exception e) { | 
| 48 promise.Reject(e); | 52 promise.Reject(e); | 
| 49 } | 53 } | 
