Search code examples
c#asp.net-mvcasp.net-mvc-3lockingdeadlock

Is deadlock possible when locking one global object in ASP.NET MVC application?


For locking I am using a single static object which is global to my application:

public class MvcApplication : System.Web.HttpApplication
{        
    public static readonly object AppLock = new object();
    ...
}

Using it for locking in code:

lock(MvcApplication.AppLock)
{
    ...
}

Let us not consider performance impact for a moment. Can I be 100% sure that I will avoid deadlock in this case?


Solution

  • You can not create a deadlock conditon just with one lock-object(AppLock) See http://en.wikipedia.org/wiki/Deadlock . But it is possible with this kind of codes in threads

    lock(A)
       lock(B)
           DoSomething();
    
    
    lock(B)
       lock(A)
           DoSomething();