class a
{
    public void b()
    {
        lock(this)
        {
            ...
        }
    }
}然后
class a1 = new a();
class a2 = new a();a1,a2针对lock中的...内容是互斥的吗?

解决方案 »

  1.   

    是的参考:
    http://blog.csdn.net/chengking/archive/2005/11/30/540644.aspx
      

  2.   

    按照楼主的描述应该不是的,但lock是一般用来互斥的
      

  3.   

    lock 关键字可将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。此语句的形式如下:lock(expression) statement_block
    其中: expression 
    指定要锁定的对象。expression 必须是引用类型。 
    通常,如果要保护实例变量,则 expression 为 this;如果要保护 static 变量(或者如果临界区出现在给定类的静态方法中),则 expression 为 typeOf (class)。 statement_block 
    临界区的语句。 
    摘自msdn
    lock ( this )只保护本实例
      

  4.   

    不会,lock(this)只用于当前实例不同线程,不同实体并不会互斥。
    如果你想方法在所有实例中进行互斥要使用lock(type)
      

  5.   

    晕ChengKing这样的高手都回答是“是”呢?a1和a2两实例不会互斥啊.