c# - 在 ASP.NET MVC 应用程序中锁定一个全局对象时是否可能出现死锁?

标签 c# asp.net-mvc asp.net-mvc-3 locking deadlock

为了锁定,我使用了一个对我的应用程序来说是全局的静态对象:

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

用它来锁定代码:

lock(MvcApplication.AppLock)
{
    ...
}

让我们暂时不考虑性能影响。我能 100% 确定在这种情况下我会避免死锁吗?

最佳答案

您不能仅使用一个锁对象 (AppLock) 来创建死锁条件,请参阅 http://en.wikipedia.org/wiki/Deadlock .但是在线程中使用这种代码是可能的

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


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

关于c# - 在 ASP.NET MVC 应用程序中锁定一个全局对象时是否可能出现死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064296/

相关文章:

c# - 仅用一个 try-catch 捕获应用程序中的所有异常

c# - 事件与产量

c# - 错误 : The EntityFramework package is not installed on project

c# - 通过 ActionFilter 检查 session 是否存在

asp.net-mvc-3 - 寻找使用 asp.net mvc3 和 knockout.js 上传文件的好例子

c# - 在 jQuery.get 到 MVC Controller 操作后重新加载页面

C#- Selenium : StaleElementReferenceException on any element on any webpage after refresh or page change

c# - 将一个对象复制到另一个对象

asp.net-mvc - ASP.NET Core MVC验证用户到Azure AD的身份,然后创建JWT承载 token 以调用Web API

c# - Entity Framework - 实体类型之间的关联已被切断问题