讨论一下lock这个问题
都做bs架构的系统,对window的东西非常缺乏。
看一编文章:http://shansun123.iteye.com/blog/517386
有一句
“. lock(this)的缺点就是在一个线程(例如本例的t1)通过执行该类的某个使用"lock(this)"的方法(例如本例的LockMe())锁定某对象之后, 导致整个对象无法被其他线程(例如本例的主线程)访问 ”
可以得出 lock(this) 会大大损耗性能。
上面那句话我以为是正确的。
请问上面总结对吗?
------解决方案--------------------lock(this)就是让某一时刻只能让一个线程使用这里面的代码,待此线程使用完毕,其他等待线程才能一一使用,跟性能有什么联系?
------解决方案--------------------lock就是为了互斥用的,如果谁都可以随意访问,lock还有啥用
------解决方案--------------------object lockdata=null;
lock(lockdata)
{
//此处处理时间越长 其它线程等待时间就越长
}
我一般是lock索引。
不知道这样用好不好
比如
List<string> ListData=new List<string>();
object lockindex=0;
....
int tempindex=0;
lock(lockindex)
{
tempindex=Convert.ToInt32(lockindex);
lockindex=tempindex+1;
}
if(tempindex>=ListData.Count)
return;
string resstr=ListData[tempindex];
纯手打 有问题请注意下
------解决方案--------------------关于线程的还是看看clr via C# 第三版
可以系统地学习
看过后,很少用,也忘记了~
------解决方案--------------------我做多线程时间比较短,是从framework4开始的,所以自然用的都是 System.Collections.Concurrent命名空间下的对象,对于lock,我觉得现在的开发已经不再需要他了。
lock是为了线程安全提供的,但现在微软出了很多线程安全的对象,都可以替代它,貌似lock是framework1的时候出的把(这个不一定准)
------解决方案--------------------
这……这不能叫“缺点”,他就是为了达到这个效果而诞生的。
------解决方案--------------------不奇葩 习惯了就好了