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(() => {