我有一个关于无状态单身人士的问题。我还有一个关于状态单例的问题。
无状态单例服务是帮助可扩展性的好方法。构建我维护的项目的程序员基本上说不会有并发问题,因为“它只是代码”(即 Singleton 类)。这意味着该类没有类级别的变量。这只是方法。
这就是我对 C# 的了解变得有些模糊的地方。是否存在两个用户通过单独的 Web 请求同时点击无状态单例的问题?他们能否同时采用相同的方法?这甚至可能吗?如果是这样,这是否意味着他们将在该方法中使用相同的局部变量?听起来很混乱,所以我假设它不可能发生。我假设方法调用永远不会被其他用户污染。
我问过很多同事这个问题,没有人知道答案。所以这是一个棘手的问题。
我关于单例的问题通常是 2 个或更多并发用户读取单例的公共属性是否有任何问题。我只对阅读感兴趣。如果属性不在锁定块内,是否有可能发生某种并发异常?或者并发、同时读取是否安全?我真的不想使用lock
关键字,因为这是我不需要的性能影响。
谢谢