c# - 为什么要使用 Hashtable.Synchronized?

标签 c# .net

来自 MSDN 文档:

“Synchronized 支持多个写入线程,前提是没有线程正在读取哈希表。在一个或多个读取器和一个或多个写入器的情况下,同步包装器不提供线程安全访问。”

来源: http://msdn.microsoft.com/en-us/library/system.collections.hashtable.synchronized.aspx

听起来我仍然必须使用锁,所以我的问题是我们为什么要使用 Hashtable.Synchronized?

最佳答案

出于同样的原因,存在不同级别的数据库事务。您可能关心写入是否有保证,但不介意读取陈旧/可能错误的数据。


编辑 我注意到他们的具体示例是枚举器。他们不能在他们的包装器中处理这种情况,因为如果你提前中断枚举,包装器类将无法知道它可以释放它的锁。

想想计数器的情况。多个线程可以在表中增加一个值,而你想要显示计数的值。如果您显示 1,200,453 而计数实际上是 1,200,454 并不重要 - 您只需要关闭它即可。但是,您不希望数据损坏。在这种情况下,线程安全对写入很重要,但对读取不重要。

关于c# - 为什么要使用 Hashtable.Synchronized?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/240906/

相关文章:

c# - 需要从 C# 中的字符串中提取字段

c# - 数据绑定(bind)到 WPF 中的方法

html - 在VB2010中有什么简单的方法可以为单个单词添加颜色?

.net - EF 4.0 - 映射到具有私有(private)字段的只读属性

c# - 将泛型类型传递给采用泛型类型的方法

.net - 增加超时时间

c# - 单击按钮获取行的 DataKeyNames

c# - 客户端证书 HttpClient .Net Core Docker Linux

c# - 只读字段或属性

.net - 处理来自 Azure 服务总线的大量消息的最佳方法