标题 | 适用范围 | 优点 | 缺点 |
使用Lock关键字进行同步 |
方法内部 | 简单,代码少,大多数情况下够用了 | |
使用System.Threading.Monitor类型进行同步 |
方法内部 | 比Lock有更好的控制力。可以指示活动的线程等待一段时间,也可在当前线程完成操作时,通知等待中的线程 | |
使用System.Threading.Interlocked类型进行同步 |
方法内部 | 允许原子型操作单个数据(包含比较,递增,递减,赋值等),比使用Monitor更简单。 | |
使用[Synchronization]特性进行同步 | 类 | “偷懒”式写法,无须深入线程控制敏感数据的细节,即可有效地使对象的所有实例成员都保持线程安全 | 降低性能,即使一个方法没有使用线程敏感的数据,CLR仍然会锁定对此方法的调用 |