2013-05-29 48 views
3

我有关于线程在c#中的问题。请参见下面的代码。现在c#同步如何锁定表现

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

    public void Function1() 
    { 

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

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

    } 

} 

我的问题是,如果在输入功能1(锁块内)某个线程,并在同一时间的另一个线程函数2进入会发生什么

  1. 线程将独立执行。
  2. 函数2中输入的线程一直等到Funtion1线程释放锁。
  3. 函数2中输入的线程抛出异常。

我是新来的c#因此要求简单的基本问题。 在此先感谢。

+0

也许这有助于http://stackoverflow.com/questions/4522128/using-the-same-lock-for-muliple-methods – V4Vendetta

回答

3

函数2中输入的线程一直等到Funtion1线程释放锁。

锁的用途就是:提供一段“安全”的代码区域,一次只能由一个线程访问。另一个线程将进入睡眠状态,并在第一个线程释放锁时恢复。

+0

线'提供一个“安全的”代码区域在这里并没有真正的帮助。这是两个不同的地区! – Rawling

+0

@Rawling好点......如果没有实现,很难改进,但让我们说“安全”(序列化)访问这两个函数访问的数据。应该会更好 –

1

2号会发生。第二个线程将在执行之前等待锁释放。