.net IIS中的单例类是线程安全的吗?
我有一个在IIS下运行的ASP.NET网页,它使用一个包含singleton类的公共程序集。我应该在singleton上实现一个锁定机制以使其线程安全吗?或者,到Web服务器的任何连接都会使用同一个singleton实例吗.net IIS中的单例类是线程安全的吗?,.net,multithreading,iis,.net,Multithreading,Iis,我有一个在IIS下运行的ASP.NET网页,它使用一个包含singleton类的公共程序集。我应该在singleton上实现一个锁定机制以使其线程安全吗?或者,到Web服务器的任何连接都会使用同一个singleton实例吗 希望我能有条理地问这个问题。如果它是静态单态。。。不,它不是线程安全的。它在访问该应用程序实例的所有线程之间共享(因此多个请求将共享它) 但是,您使用它的目的可能不一定需要线程安全。通常的.NET单例模式为每个应用程序域创建一个实例。asp.net中的常见情况是,在同一应用程
希望我能有条理地问这个问题。如果它是静态单态。。。不,它不是线程安全的。它在访问该应用程序实例的所有线程之间共享(因此多个请求将共享它)
但是,您使用它的目的可能不一定需要线程安全。通常的.NET单例模式为每个应用程序域创建一个实例。asp.net中的常见情况是,在同一应用程序域中运行多个线程。这意味着您可以让多个线程同时在您的单例中运行代码 您必须检查单例并(尽您所能)确定它是否是线程安全的。如果它保留和修改共享资源,或者如果它封装了在方法调用之间存储的某种状态,请小心
您可能希望将该单例封装在第二个使用锁的单例中,然后再将其调用委托给您无法控制的单例。这样,您就可以更好地控制锁定,而不是使用单个锁来阻止对singleton的每个调用。它还将为您提供集中线程代码位置的好处…在.NET中,可以实现
不使用锁。-1。如果需要,这些方法将需要有锁。此链接不涉及这些细节(仅涉及如何创建singleton类本身,而不涉及其功能)。+1。这个评论不值得-1。实际上,这些方法可能需要锁,但这与单例模式本身的实现是分开的。