【发布时间】:2010-07-17 04:39:49
【问题描述】:
有人告诉我,在多线程程序中,静态类会给我们带来一些麻烦。
你能解释一下吗?
【问题讨论】:
-
您是否被告知静态类可能不是线程安全的?
标签: .net multithreading class static
有人告诉我,在多线程程序中,静态类会给我们带来一些麻烦。
你能解释一下吗?
【问题讨论】:
标签: .net multithreading class static
如果静态类有任何静态状态(例如,“全局”变量),它会在所有线程之间共享。如果程序员不小心,与这些类交互就会出现问题。还有更多,但这是它的要点。
【讨论】:
使用多线程程序,您可能会在任何事情上遇到一些问题,而不仅仅是静态类。在处理多线程时,主要关注点通常是数据争用......换句话说:确保在读取或写入共享资源时正确操作。静态类有一些挑战,但也有一些潜在的好处:
一个潜在的好处是,如果静态数据是恒定的,那么就不需要同步,因为数据只能读取而不能写入。一个流行的例子是一个使用静态实例的Singleton 类,并且该实例只被初始化一次,因此不需要为 Singleton 实例进行同步。可能仍然需要对包含在
单身
实例
【讨论】: