//Demonstration that this queue isn't MPSC public void ConcurrencyTest2() { var q = UnsafeSPSCQueue.Allocate <int>(1600000); int count = 1000000; Thread writer = new Thread(() => { for (int i = 0; i < count / 2; i++) { UnsafeSPSCQueue.Enqueue(q, i); } }); Thread writer2 = new Thread(() => { for (int i = 0; i < count / 2; i++) { UnsafeSPSCQueue.Enqueue(q, i); } }); writer.Start(); writer2.Start(); writer.Join(); writer2.Join(); Assert.AreNotEqual(count, UnsafeSPSCQueue.GetCount(q)); UnsafeSPSCQueue.Free(q); }
public void ConstructorTest() { var q = UnsafeSPSCQueue.Allocate <int>(10); Assert.AreEqual(0, UnsafeSPSCQueue.GetCount(q)); Assert.AreEqual(10, UnsafeSPSCQueue.GetCapacity(q)); UnsafeSPSCQueue.Free(q); }
public void ClearTest() { var q = UnsafeSPSCQueue.Allocate <int>(10); //Inserts 10 items. SplitQueue(q); Assert.AreEqual(10, UnsafeSPSCQueue.GetCount(q)); UnsafeSPSCQueue.Clear(q); Assert.AreEqual(0, UnsafeSPSCQueue.GetCount(q)); Assert.IsTrue(UnsafeSPSCQueue.IsEmpty <int>(q)); UnsafeSPSCQueue.Free(q); }
public void PeekTest() { var q = UnsafeSPSCQueue.Allocate <int>(10); for (int i = 0; i < 10; i++) { UnsafeSPSCQueue.Enqueue(q, (int)Math.Pow(i + 2, 2)); } for (int i = 0; i < 10; i++) { Assert.AreEqual(4, UnsafeSPSCQueue.Peek <int>(q)); } //Verify no items are dequeued Assert.AreEqual(10, UnsafeSPSCQueue.GetCount(q)); UnsafeSPSCQueue.Free(q); }
public void EnqueueTest() { var q = UnsafeSPSCQueue.Allocate <int>(10); for (int i = 0; i < 10; i++) { UnsafeSPSCQueue.Enqueue(q, i * i); } Assert.AreEqual(10, UnsafeSPSCQueue.GetCount(q)); Assert.AreEqual(10, UnsafeSPSCQueue.GetCapacity(q)); UnsafeSPSCQueue.Clear(q); Assert.AreEqual(0, UnsafeSPSCQueue.GetCount(q)); Assert.AreEqual(10, UnsafeSPSCQueue.GetCapacity(q)); UnsafeSPSCQueue.Free(q); }