繁体   English   中英

在多线程系统中使用静态对象

[英]Using static objects in a multi-threaded system

我想知道多线程系统以下列方式使用静态类意味着什么:

  1. 不使用服务:
    A 类的多个实例使用相同的静态 B 类进行一些随机计算(例如 System.Math)
  2. 使用 WCF 服务:
    一种。 让 1 个 WCF 服务执行 1 中描述的操作。
    拥有多个 WCF 服务,每个服务都有 1 个 A 类实例,使用相同的静态 B 类进行一些随机计算
    C。 拥有多个 WCF 服务,每个服务都有超过 1 个 A 类实例,所有这些服务都使用相同的静态 B 类进行一些随机计算

据我了解,按照 2.b. 使用静态类。 是多线程系统的唯一合适选项,因为每个 WCF 服务都将创建自己的静态类副本/实例。 所有其他选项将共享相同的静态类,因此不允许多线程。

差不多吧?

但这对其他选项意味着什么? 有没有办法让静态类以某种方式可实例化? 考虑到 System.Math,我真的不能只是去编辑源代码。
或者只是通过在使用这些静态类的地方添加锁来应对它是一种常见的做法吗?

也许在可能的情况下,应该使用单音而不是静态的?

我认为最好的选择是在使用静态类的地方添加一个锁

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM