# HG changeset patch # User cin # Date 1415720255 -10800 # Node ID f3bdb7ba59b9cfadcc6c93f74960af1ad35f93b1 # Parent f5220e5472ef625fa0fcc3e9fbd0b5b8eff1f859 sync diff -r f5220e5472ef -r f3bdb7ba59b9 MonoPlay/Program.cs --- a/MonoPlay/Program.cs Tue Nov 11 04:14:21 2014 +0300 +++ b/MonoPlay/Program.cs Tue Nov 11 18:37:35 2014 +0300 @@ -16,10 +16,23 @@ const int count = 10000000; + var t1 = Environment.TickCount; - for (var i = 0; i < count; i++) - q1.Enqueue(i); + Promise.CreateComposite( + new [] { + AsyncPool.InvokeNewThread(() => { + for (var i = 0; i < count; i++) + q1.Enqueue(i); + }), + AsyncPool.InvokeNewThread(() => { + int temp = 0; + for(int i =0 ; i< count ; i++) + while(!q1.TryDequeue(out temp)){ + } + }) + } + ).Join(); var t2 = Environment.TickCount; Console.WriteLine("MTQueue: {0} ms", t2 - t1); @@ -36,9 +49,27 @@ t1 = Environment.TickCount; - for (var i = 0; i < count; i++) - lock (q2) - q2.Enqueue(i); + Promise.CreateComposite( + new [] { + AsyncPool.InvokeNewThread(() => { + for (var i = 0; i < count; i++) + lock (q2) + q2.Enqueue(i); + }), + AsyncPool.InvokeNewThread(() => { + for(int i = 0 ; i< count ;) + lock(q2) { + if(q2.Count == 0) + continue; + q2.Dequeue(); + i++; + } + + }) + } + ).Join(); + + t2 = Environment.TickCount; Console.WriteLine("LinkedList+Lock: {0} ms", t2 - t1);