锁定类的类型与类本身的锁定有什么区别?
例如:
private readonly object xmpp = new object();
lock (xmpp)
{
...
}
VS
lock (typeof(Xmpp))
{
...
}
答案 0 :(得分:19)
lock(x)
针对该类型的每个实例在不同的锁上进行同步
lock(typeof(X))
同步锁定所有类型的实例
始终锁定私人锁定对象:
public class X
{
private readonly Object _lock = new Object();
// ...
lock (_lock)
{
}
如果您必须同步对类静态成员的访问权限,请使用相同的模式:
public class X
{
private readonly static Object s_lock = new Object();