示例#1
0
        private void Write(bool a, bool b, bool c)
        {
            if (a)
            {
                using (wla.LockWrite())
                {
                    ba = true;

                    ia++;

                    using (console.LockWrite())
                    {
                        Console.WriteLine("a => " + ia);
                    }

                    ba = false;
                }
            }
            else if (b)
            {
                using (UsableWriteLock.LockWrite(wla, wlb))
                {
                    ba = true;
                    bb = true;

                    ia++;
                    ib++;

                    using (console.LockWrite())
                    {
                        Console.WriteLine("a => " + ia + ", b => " + ib);
                    }

                    ba = false;
                    bb = false;
                }
            }
            else if (c)
            {
                using (UsableWriteLock.LockWrite(wla, wlb, wlc))
                {
                    ba = true;
                    bb = true;
                    bc = true;

                    ia++;
                    ib++;
                    ic++;

                    using (console.LockWrite())
                    {
                        Console.WriteLine("a => " + ia + ", b => " + ib + ", c => " + ic);
                    }

                    ba = false;
                    bb = false;
                    bc = false;
                }
            }
        }
示例#2
0
        private void Read(bool a, bool b, bool c)
        {
            if (a)
            {
                using (wla.LockRead())
                {
                    Assert.IsFalse(ba);

                    string s = " | " + (ba ? "1" : "0");

                    using (console.LockWrite())
                    {
                        Console.WriteLine("a is " + ia + s);
                    }

                    Assert.IsFalse(ba);
                }
            }
            else if (b)
            {
                using (UsableWriteLock.LockRead(wla, wlb))
                {
                    Assert.IsFalse(ba);
                    Assert.IsFalse(bb);

                    string s = " | " + (ba ? "1" : "0") + " | " + (bb ? "1" : "0");

                    using (console.LockWrite())
                    {
                        Console.WriteLine("a is " + ia + ", b is " + ib + s);
                    }

                    Assert.IsFalse(ba);
                    Assert.IsFalse(bb);
                }
            }
            else if (c)
            {
                using (UsableWriteLock.LockRead(wla, wlb, wlc))
                {
                    Assert.IsFalse(ba);
                    Assert.IsFalse(bb);
                    Assert.IsFalse(bc);

                    string s = " | " + (ba ? "1":"0") + " | " + (bb ? "1" : "0") + " | " + (bc ? "1" : "0");

                    using (console.LockWrite())
                    {
                        Console.WriteLine("a is " + ia + ", b is " + ib + ", c is " + ic + s);
                    }

                    Assert.IsFalse(ba);
                    Assert.IsFalse(bb);
                    Assert.IsFalse(bc);
                }
            }
        }