Lock语句参数中对象的用途

时间:2017-10-06 01:41:01

标签: c# thread-safety locking

Lock参数中对象的用途是什么。这是一个例子:

public class TestThreading  
{  
    private System.Object lockThis = new System.Object();  

    public void Process()  
    {  

        lock (lockThis)  
        {  
            // Access thread-sensitive resources.  
        }  
    }  

} 

...这个'lockThis'对象将任何东西传递给Lock体。为什么我不能在参数中使用没有对象的Lock语句。

1 个答案:

答案 0 :(得分:3)

传递给lock语句的对象可以被认为是锁的标识符。对于任何对象,在任何给定时间只有一个线程可以获得该对象的独占锁。通过允许将对象传递给lock语句,您可以将不同的对象用于关键代码的不同区域。

lock语句文档相比,Monitor.Enter文档提供了对象使用的更好描述。