以下两种lock的方法,有什么优缺点呢?小弟是新手,向各位大侠请教了。谢谢啦!public class Demo
{
public void DoThis()
{
lock (this)
{
// only one thread at a time can access the DoThis and DoThat methods
}
}
public void DoThat()
{
lock (this)
{
}
}
}public class Demo
{
private object syncRoot = new object();
public void DoThis()
{
lock (syncRoot)
{
// only one thread at a time can access the DoThis and DoThat methods
}
}
public void DoThat()
{
lock (syncRoot)
{
}
}
}

解决方案 »

  1.   

    通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。 常见的结构 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 违反此准则:如果实例可以被公共访问,将出现 lock (this) 问题。如果 MyType 可以被公共访问,将出现 lock (typeof (MyType)) 问题。由于进程中使用同一字符串的任何其他代码都将共享同一个锁,所以出现 lock(“myLock”) 问题。 
      

  2.   

    一般这样:
    private static object obj = new object();
    使用的时候:
    lock(obj)
      

  3.   

    你是说DoThis(),DoThis()两个方法?  这里面没什么,需要自己定义方法内容的吧。
      

  4.   

    我就会一种lock,比如一个数组arraylist al;
    lock(al)
    {
    }