在从IIS运行的WCF中,我有这段代码(以及类似的东西)。IIS/WCF静态方法Threadsafety
public static class Test
{
public static int Method(int x, int y)
{
int p = 10;
int r = p * x * y;
return r;
}
}
这个方法在理论上可以从100万个不同用户的100万个请求中同时调用。
我有一个论点与同事讨论,我的立场是,这个方法调用的每个实例是分开的,永远不会导致调用之间的数据损坏。这是由这个线程:C# : What if a static method is called from multiple threads?
然而,我的同事声称,IIS和WCF是一种特殊的怪物,可以缓存和启动/停止在各种奇怪的地方的电话,以便实际上这些电话实际上可以干扰另一个。
他举的例子是,如果一个调用在方法内部,另一个调用带有新的参数,那么int x
和int y
参数变量值可能会被替换为已经进行的调用。
他的立场是从不在任何IIS/WCF相关的任何东西中使用static
方法/类。
我还没有找到任何可以支持这两种情况的可靠文档,任何人都会在这个问题上抛出一些好的文档参数?
可能他们将线程安全问题与单例是否将成为您网站使用的唯一实例的问题混淆。我认为他们在关于不在网站中使用单例模式的一般规则是正确的。即使其他一切正常,请考虑一个网络农场 – Ewan 2015-03-13 12:03:59