Mercurial > pub > ImplabNet
comparison Implab/Parallels/AsyncPool.cs @ 45:d10034588e38 interactive logger
initial work on interactive logger
| author | cin |
|---|---|
| date | Thu, 17 Apr 2014 03:05:53 +0400 |
| parents | fe33f4e02ad5 |
| children | d9d794b61bb9 |
comparison
equal
deleted
inserted
replaced
| 42:3ba6778ed336 | 45:d10034588e38 |
|---|---|
| 10 /// Используя данный класс и лямда выражения можно распараллелить | 10 /// Используя данный класс и лямда выражения можно распараллелить |
| 11 /// вычисления, для этого используется концепция обещаний. | 11 /// вычисления, для этого используется концепция обещаний. |
| 12 /// </remarks> | 12 /// </remarks> |
| 13 public static class AsyncPool { | 13 public static class AsyncPool { |
| 14 | 14 |
| 15 public static Promise<T> Invoke<T>(Func<T> func) { | 15 public static IPromise<T> Invoke<T>(Func<T> func) { |
| 16 var p = new Promise<T>(); | 16 var p = new Promise<T>(); |
| 17 var caller = TraceContext.Snapshot(); | 17 var caller = TraceContext.Snapshot(); |
| 18 | 18 |
| 19 ThreadPool.QueueUserWorkItem(param => { | 19 ThreadPool.QueueUserWorkItem(param => { |
| 20 TraceContext.Transfer(caller); | 20 TraceContext.Transfer(caller); |
| 26 }); | 26 }); |
| 27 | 27 |
| 28 return p; | 28 return p; |
| 29 } | 29 } |
| 30 | 30 |
| 31 public static Promise<T> InvokeNewThread<T>(Func<T> func) { | 31 public static IPromise<T> InvokeNewThread<T>(Func<T> func) { |
| 32 var p = new Promise<T>(); | 32 var p = new Promise<T>(); |
| 33 | 33 |
| 34 var caller = TraceContext.Snapshot(); | 34 var caller = TraceContext.Snapshot(); |
| 35 | 35 |
| 36 var worker = new Thread(() => { | 36 var worker = new Thread(() => { |
