private void Experiment(OrderQueueType type, EventWaitHandle waitHandler) { Stopwatch sw = Stopwatch.StartNew(); QueueProvider.SetQueueType(type); TradeConsole tc = new TradeConsole(); tc.Execute(); Broker broker = new Broker(); broker.Complete = () => { sw.Stop(); Console.WriteLine(string.Format("{1, 35}\t\t\t\t{0}", sw.ElapsedMilliseconds, type.ToString())); waitHandler.Set(); }; broker.Sell(); }
public static IOrderQueue Create(OrderQueueType type) { switch (type) { case OrderQueueType.ConcurrentQueue: return new ConcurrentOrderQueue(); case OrderQueueType.BlockingCollection: return new OrderBlockingQueue(); case OrderQueueType.ConcurrentStack: return new OrderStack(); case OrderQueueType.ConcurrentBag: return new ConcurrentOrderBag(); case OrderQueueType.MonitorBlockingQueue: return new MonitorBlockingQueue(); case OrderQueueType.ReaderWriterLockBlockingQueue: return new ReaderWriterLockBlockingQueue(); case OrderQueueType.ReaderWriterLockSlimBlockingQueue: return new ReaderWriterLockSlimBlockingQueue(); default: return null; } }
public static void SetQueueType(OrderQueueType type) { _orderQueue = OrderQueueFactory.Create(type); }