public void TestWriteRead()
        {
            LockQueue queue = new LockQueue();

            queue.LockNoWait("lock1", LockType.Write);
            Assert.AreEqual(queue.Length, 1);
            queue.LockNoWait("lock2", LockType.Read);
            Assert.AreEqual(queue.Length, 1);
        }
        public void TestAddAndRemove()
        {
            LockQueue queue = new LockQueue();

            queue.LockNoWait("lock1", LockType.Read);
            Assert.AreEqual(queue.Length, 1);

            queue.LockNoWait("lock2", LockType.Read);
            Assert.AreEqual(queue.Length, 2);

            queue.Unlock("lock2");
            Assert.AreEqual(queue.Length, 2);

            queue.Unlock("lock1");
            Assert.AreEqual(queue.Length, 0);
        }