Unity”;ContainerControlled”;单线程和多线程方法调用

本文关键字:方法 调用 多线程 单线程 ContainerControlled Unity | 更新日期: 2023-09-27 18:26:50

我正在使用Microsoft Unity进行依赖注入(DI)。我的类基本上是静态的(在功能上,但不是编码/调用约定),除了我想要DI,所以我使用Unity和Constructors来自动解析其他Unity类。

既然这是一个单例模式,那么多个线程能同时执行同一个代码块吗?

例如,假设我有一个Add方法,它返回一个int,并将两个int作为输入。。。

多个线程是否可以同时在同一个singleton对象上调用此Add方法?或者因为是同一个实例,线程会阻塞等待调用吗?

换句话说,方法调用静态方法和单例实例方法之间有什么区别吗?

(我知道在singleton实例方法中使用的任何共享数据都必须是线程安全的)

Unity”;ContainerControlled”;单线程和多线程方法调用

没有区别。只有当您有需要保护的共享状态时,线程安全才是重要的。像您描述的方法-简单的添加操作-获取调用堆栈中的所有相关上下文不需要任何保护,因此您可以在多线程环境中安全地使用它。

当然,实例方法调用和静态方法调用在函数和非函数领域都有区别。静态方法被认为比实例方法快得可以忽略不计,但它们不能在多态软件设计中有效使用-(好吧,至少在C#中不能)