多个线程可以调用单个对象的属性和方法时,对这些调用进行同步处理是非常重要的。 否则,一个线程可能会中断另一个线程正在执行的任务,可能使该对象处于无效状态。 其成员不受这类中断影响的类叫做线程安全类。
.NET 提供了几种策略,用于同步对实例和静态成员的访问:
- 同步代码区域。 可以使用 Monitor 类或此类的编译器支持,仅同步需要它的代码块,从而提升性能。
- 手动同步。 可以使用 .NET 类库提供的同步对象(同步基元)。
- 同步上下文。可以使用 SynchronizationAttribute 为 ContextBoundObject 对象启用简单的自动同步。
- System.Collections.Concurrent 命名空间中的集合类(现场安全集合)。 这些类提供了内置的同步添加和删除操作。