private static void ProduceMethod(object prodConsObj) { IProduceConsume <DTO> prodCons = prodConsObj as IProduceConsume <DTO>; Random rnd = new Random(); byte[] rndData = new byte[8]; byte[] allData = new byte[12]; if (prodCons == null) { bKillSwitch = true; } int iCount = 0; while (!bKillSwitch) { rnd.NextBytes(rndData); Buffer.BlockCopy(rndData, 0, allData, 0, rndData.Length); Buffer.BlockCopy(BitConverter.GetBytes((uint)iCount), 0, allData, 8, sizeof(uint)); prodCons.Enqueue(DTO.GetStruct(allData)); cTimer.RecordTime(cTimer.ActionsEnm.Enq, (uint)iCount); iCount++; if (iCount == 2000) { bKillSwitch = true; cTimer.WriteAllRecords(); } } prodCons.Stop(); }
public static void Main(string[] args) { IProduceConsume <DTO> prodConsume = ProduceConsumeFactory <DTO> .GetImplementation(ProdCons.Interlocked, 2); Thread thrProduce = new Thread(new ParameterizedThreadStart(ProduceMethod)); thrProduce.Start(prodConsume); Thread thrConsume = new Thread(new ParameterizedThreadStart(ConsumeMethod)); thrConsume.Start(prodConsume); thrProduce.Join(); }