如何防止多线程间的数据冲突
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