【问题标题】:Must static method/classes/variables be accessed one at a time in .net?必须在.net 中一次访问一个静态方法/类/变量吗?
【发布时间】:2011-07-01 12:04:12
【问题描述】:

我在静态方法/类/变量中编写了很多代码,以便可以跨站点访问它们,以实现全球化思想并在类不是数据保存类时“节省”创建和销毁类(dbcontext例如)。

问题是,这些类/方法必须一次只能访问一次吗?它们会导致任何类型的瓶颈吗?

谢谢。

【问题讨论】:

    标签: .net static


    【解决方案1】:

    问题是这个类/方法一次只能访问一次吗?

    不,它们可以被多次并行访问。您应该小心多线程应用程序中的静态类,因为您需要确保它们是线程安全的。

    它们会导致任何类型的瓶颈吗?

    这将取决于它们的编写方式和作用。

    【讨论】:

      【解决方案2】:

      可以并行访问静态方法、字段和属性。如果您需要“一次一个”,为了数据安全,您将需要一个锁或其他一些同步方法。

      【讨论】:

        【解决方案3】:

        不确定您在这里的意思,但静态成员是从任何给定线程按顺序访问的,就像实例成员一样。

        如果你从多个线程访问一个静态成员,那么你应该同步访问,即确保它们按顺序发生,使用任何synchronization constructs available in .NET。这是为了避免 race conditions 带来的不可预测的副作用。

        【讨论】:

        • 我想补充一点,你不需要同步任何静态成员,它只是一个穷人的函数(在数学意义上),即只接受输入并根据已知转换返回输出.
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 2017-01-13
        • 1970-01-01
        • 2014-11-23
        • 2018-07-04
        相关资源
        最近更新 更多