当前位置: 代码迷 >> ASP.NET >> 多线程 锁的有关问题?
  详细解决方案

多线程 锁的有关问题?

热度:9094   发布时间:2013-02-25 00:00:00.0
多线程 锁的问题????????????????????????????
原贴地址http://topic.csdn.net/u/20111007/11/a684438d-123c-4687-af7c-5e8db4b316c6?49311


求达人解!

------解决方案--------------------------------------------------------
C# code
void funcB(int i)  {  if (!list.Contains(i))  {     lock (dummyObject)     {    [color=#FF0000] if (!list.Contains(i))[/color]       {         list.Add(i);         System.Diagnostics.Debug.WriteLine(i);        }     }  }  else  {  System.Diagnostics.Debug.WriteLine(i.ToString() + " existed");  }  }
------解决方案--------------------------------------------------------
God..

失误,

在lock 里 还判断一次,

if (!list.Contains(i))
{
}
------解决方案--------------------------------------------------------
dummyobject 

你锁这个变量,和你的list 集合是什么关系。同一个类下面?

是否是 private static object dummyobject=new object();

list 又是什么访问级别。
------解决方案--------------------------------------------------------
C# code
Thread t1 = new Thread(new ThreadStart(FunA));            t1.Start();            Thread t2 = new Thread(new ThreadStart(FunA));            t2.Start();            Thread t3 = new Thread(new ThreadStart(FunA));            t3.Start();            Thread t4 = new Thread(new ThreadStart(FunA));            t4.Start();            Thread.Sleep(3000);            Console.WriteLine("the length of lists is {0}", lists.Count);            Console.WriteLine("the elements of lists are:");            foreach (int i in lists)            {                Console.Write(i.ToString() + " ");            }            Console.ReadLine();public static void FunA()        {            Random rand = new Random();            FunB(rand.Next(1, 10));        }        public static void FunB(Int32 i)        {            Console.WriteLine(i);            if (!lists.Contains(i))            {                lock (lockObject)                {                    if (!lists.Contains(i))                    {                        lists.Add(i);                    }                }            }        }
  相关解决方案