我已经看到获取锁定时使用的对象的不同变体
静态私有对象
public class MyClass
{
private static object syncBlock = new object();
private void MyMethod()
{
lock (syncBlock)
{
}
}
}
类级私有对象
public class MyClass
{
private object syncBlock = new object();
private void MyMethod()
{
lock (syncBlock)
{
}
}
}
使用类型本身
public class MyClass
{
private void MyMethod()
{
lock (typeof (MyClass))
{
}
}
}
使用此:
public class MyClass
{
private void MyMethod()
{
lock (this)
{
}
}
}
有人可以详细说明每种方案的优缺点,以及在特定情况下是否优先于其他方式。