问题描述
- 对于Lock的以下几种方式,你觉得比较合适的是哪一个?为什么?
-
第一种
{
Object obj = new Object();
lock(obj)
{}
}
第二种
{
Object obj = new Object();
lock(typeof(obj))
{}
}
第三种
Private static Object obj = new Object();
{lock(obj)
{}
}
第四种
{lock(this)
{}
}
解决方案
msdn上说的很清楚
lock(this)
Private static Object obj = new Object();
lock(typeof(obj))
都是不可取的。
https://msdn.microsoft.com/zh-cn/library/c5kehkcz(VS.80).aspx
通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。常见的结构 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 违反此准则:
如果实例可以被公共访问,将出现 lock (this) 问题。
如果 MyType 可以被公共访问,将出现 lock (typeof (MyType)) 问题。
由于进程中使用同一字符串的任何其他代码将共享同一个锁,所以出现 lock(“myLock”) 问题。
这个问题提得很不应该,典型不动脑筋。
解决方案二:
线程同步几种方式的比较
解决方案三:
线程同步几种方式的比较
时间: 2024-11-16 18:52:11