日期:2014-05-17  浏览次数:20998 次

如何防止多线程间的数据冲突
public static List<string> numbers ;
public void A()
{
  while(true)
  {
    Thread t=new System.Threading.Thread (new ThreadStart(B);
    t.start();
    Thread.sleep(100);
  }
}

public void B()
{
       Console.WriteLine(numbers [0]);
       numbers.RemoveAt(0);


(上面是我随便写的一段假设代码)
问题:怎样才能确保线程间不会出现同时调用方法B的Console.WriteLine输出同样的string值(按道理是应该不可能出现2个同样的值输出)

------解决方案--------------------
object lockobj = new lockobj();
lock (lockobj) {
       Console.WriteLine(numbers [0]);
        numbers.RemoveAt(0);
}
------解决方案--------------------
加lock关键字,更多线程同步内容可以参考MSDN线程同步专题或这个博文系列:
http://www.cnblogs.com/zhili/category/398603.html