示例#1
0
        private static void ThreadFunc(object state)
        {
            int index = (int)state;

            ThreadContext.Set((index + ThreadCount).ToString(), index);
            Atomic.Inc(ref lock_);

            while (Atomic.Cas(ref lock_, ThreadCount, ThreadCount) != ThreadCount)
            {
                Soyo.Base.Thread.Sleep(1);
            }

            bool result = ThreadContext.Contains("1");

            Assert.IsFalse(result, "value should be false");;

            result = ThreadContext.Contains("2");
            Assert.IsFalse(result, "value should be false");;

            for (int i = 0; i < ThreadCount; i++)
            {
                object value = ThreadContext.Get((i + ThreadCount).ToString());
                if (i == index)
                {
                    Assert.AreEqual(value, index, "value should be index");
                }
                else
                {
                    Assert.IsNull(value, "value should be null");;
                }
                Atomic.Inc(ref checkCount_);
            }
        }