首页 新闻 会员 周边

想问下HashTable内部是如何实现线程安全的

0
悬赏园豆:80 [已关闭问题]

用Reflector查看了Hashtable类 但是只发现了

1.特性 [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]

2. Thread.BeginCriticalRegion();EndCriticalRegion();

 

查看MSDN得知Thread.BeginCriticalRegion不实现lock 那么Hashtable为什么说是线程安全的呢

他是怎么实现的?请教各位了 3Q

黄泉天上来的主页 黄泉天上来 | 菜鸟二级 | 园豆:230
提问于:2009-06-11 23:48
< >
分享
其他回答(1)
0

Hashtable似乎原本不保证线程安全,只有调用了Hashtable.Synchronized方法后才变成线程安全,内部使用一个静态字段实现锁定

Gray Zhang | 园豆:17610 (专家六级) | 2009-06-12 00:42
http://msdn.microsoft.com/zh-cn/architecture/system.collections.hashtable.aspx 从这里面看来Hashtable在 多个读取器线程和一个写入线程使用 时 是线程安全的。 Hashtable.Synchronized 只是返回了一个 对写操作加了锁的子类。不过看不太懂Hashtable的源码,貌似是读取的时候如果正在写入的话会陷入一个循环中,不知道这样会不会有可能死掉呢。。
支持(0) 反对(0) lsjwzh | 园豆:113 (初学一级) | 2010-03-13 18:30
0

有个Hashtable.Synchronized,,,也可以自己写lock

doom | 园豆:202 (菜鸟二级) | 2012-07-26 10:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册