单例类是否在IIS中是线程安全的?

7 .net iis multithreading

我有一个在IIS下运行的ASP.NET网页,它使用包含单例类的公共程序集.我应该在单例上实现一个锁定机制,使其具有线程安全性吗?或者,与Web服务器的任何连接是否都使用相同的单例实例?

希望我能连贯地问这个问题.

小智 2

.NET 单例的常见模式为每个应用程序域创建一个实例。ASP.NET 中的常见情况是有多个线程通过同一个应用程序域运行。这意味着您很可能有多个线程同时在单例中运行代码。

您必须检查单例并确定(尽您所能koffreflectorkoff)它是否是线程安全的。如果它保留和修改共享资源,或者如果它封装了在方法调用之间存储的某种状态,请小心。

您可能希望将单例包装在第二个单例中,该单例在将其调用委托给您无法控制的单例之前使用锁。这样您就可以更好地控制锁定,而不是使用单个锁阻止对单例的每次调用。它还会给您带来集中线程代码位置的好处......