Mercurial > pub > ImplabNet
comparison MonoPlay/Program.cs @ 108:f3bdb7ba59b9 v2
sync
author | cin |
---|---|
date | Tue, 11 Nov 2014 18:37:35 +0300 |
parents | 5f10d54b45df |
children | 2573b562e328 |
comparison
equal
deleted
inserted
replaced
107:f5220e5472ef | 108:f3bdb7ba59b9 |
---|---|
14 var q1 = new MTQueue<int>(); | 14 var q1 = new MTQueue<int>(); |
15 var q2 = new Queue<int>(); | 15 var q2 = new Queue<int>(); |
16 | 16 |
17 const int count = 10000000; | 17 const int count = 10000000; |
18 | 18 |
19 | |
19 var t1 = Environment.TickCount; | 20 var t1 = Environment.TickCount; |
20 | 21 |
21 for (var i = 0; i < count; i++) | 22 Promise<int>.CreateComposite( |
22 q1.Enqueue(i); | 23 new [] { |
24 AsyncPool.InvokeNewThread(() => { | |
25 for (var i = 0; i < count; i++) | |
26 q1.Enqueue(i); | |
27 }), | |
28 AsyncPool.InvokeNewThread(() => { | |
29 int temp = 0; | |
30 for(int i =0 ; i< count ; i++) | |
31 while(!q1.TryDequeue(out temp)){ | |
32 } | |
33 }) | |
34 } | |
35 ).Join(); | |
23 | 36 |
24 var t2 = Environment.TickCount; | 37 var t2 = Environment.TickCount; |
25 Console.WriteLine("MTQueue: {0} ms", t2 - t1); | 38 Console.WriteLine("MTQueue: {0} ms", t2 - t1); |
26 | 39 |
27 t1 = Environment.TickCount; | 40 t1 = Environment.TickCount; |
34 | 47 |
35 q2 = new Queue<int>(); | 48 q2 = new Queue<int>(); |
36 | 49 |
37 t1 = Environment.TickCount; | 50 t1 = Environment.TickCount; |
38 | 51 |
39 for (var i = 0; i < count; i++) | 52 Promise<int>.CreateComposite( |
40 lock (q2) | 53 new [] { |
41 q2.Enqueue(i); | 54 AsyncPool.InvokeNewThread(() => { |
55 for (var i = 0; i < count; i++) | |
56 lock (q2) | |
57 q2.Enqueue(i); | |
58 }), | |
59 AsyncPool.InvokeNewThread(() => { | |
60 for(int i = 0 ; i< count ;) | |
61 lock(q2) { | |
62 if(q2.Count == 0) | |
63 continue; | |
64 q2.Dequeue(); | |
65 i++; | |
66 } | |
67 | |
68 }) | |
69 } | |
70 ).Join(); | |
71 | |
72 | |
42 | 73 |
43 t2 = Environment.TickCount; | 74 t2 = Environment.TickCount; |
44 Console.WriteLine("LinkedList+Lock: {0} ms", t2 - t1); | 75 Console.WriteLine("LinkedList+Lock: {0} ms", t2 - t1); |
45 | 76 |
46 } | 77 } |