问:当来自两个不同app-domains的两个线程访问该类时,单个实例是否会被破坏?
我做了一些研究,发现以下几点相关。
A(.NET)Singleton对于每个App域都是唯一的 - 至少,常见的Singleton模式是。我想你可以实现每个进程Singleton,但我还没有想过它会如何工作....
你的单身人士将有2个实例。
该方法的输入参数(参数)位于堆栈中。每个线程都有一个单独的堆栈。当正在运行的线程切换时,堆栈将被替换。
专家建议。?
答案 0 :(得分:3)
当来自两个不同app-domains的两个线程访问该类时,单个实例是否会被破坏?
是。甚至可以从相同的应用程序域。考虑一下这个简单的单例实现:
private static Singleton instance;
public static Singleton Instance
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
两个线程可能同时进入该属性。在这两种情况下instance == null
都为真,并创建了一个新实例。一个方法已经返回创建的实例,另一个方法重置instance
并稍后返回该实例。单身破碎。