2011-07-01 34 views
4

我在静态方法/类/变量中写了很多我的代码,以便它们可以在整个站点中访问,以便为全球化想法提供帮助,并且在不是数据保存类时“免除”创建和销毁类(dbcontext for例)。必须在.net中一次访问一个静态方法/类/变量吗?

问题是,这些类/方法一次只能访问一次吗?他们是否会造成任何形式的瓶颈?

谢谢。

回答

1

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

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

他们是否会造成任何种类的瓶颈?

这将取决于它们如何书写以及它们的功能。

0

不确定这里是什么意思,但是静态成员是从任何给定线程按顺序访问的,这与实例成员的方式相同。

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

+0

我想补充一点,你不需要同步任何仅仅是穷人功能(在数学意义上)的静态成员,即只需要基于已知变换的输入和返回输出。 –

1

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

相关问题