社区
C#
帖子详情
线程同步Hashtable问题
hainang1234
2006-01-11 12:33:39
看了MSDN[中文]好几篇,没太懂,存在一些问题,请教一下:
1.Hashtable.Synchronized(new Hashtable)创建的Hashtable可以保证Add,Update,Remove方法正确同步吗?
2.锁定Hashtable本身和锁定Hashtable.SyncRoot有什么区别?
3.安全的遍历Hashtable需要锁定Hashtable.SyncRoot?
...全文
398
6
打赏
收藏
线程同步Hashtable问题
看了MSDN[中文]好几篇,没太懂,存在一些问题,请教一下: 1.Hashtable.Synchronized(new Hashtable)创建的Hashtable可以保证Add,Update,Remove方法正确同步吗? 2.锁定Hashtable本身和锁定Hashtable.SyncRoot有什么区别? 3.安全的遍历Hashtable需要锁定Hashtable.SyncRoot?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
linfengcyl
2006-01-12
打赏
举报
回复
按MSDN的意思应该如此,有待试验。MSDN也会出错:)
如果是多线程访问,任一线程中任一方法没有使用lock(hashtable.SyncRoot),都有可能会出错。(验证过)
看MSDN的意思用Hashtable.Synchronized应该是最安全的,不过代价应该也最大。(未验证)
lostowner
2006-01-12
打赏
举报
回复
学习
lidong6
2006-01-12
打赏
举报
回复
那就是说如果不派生类的话应该就一样了.
hainang1234
2006-01-11
打赏
举报
回复
自己又看了一些,自己做出了一些理想:
1.Hashtable.Synchronized(new Hashtable)创建的Hashtable在进行Add,Update,Remove操作时会锁住Hashtable.SyncRoot。
2.锁Hashtable本身和锁定Hashtable.SyncRoot本身是一样的。只不过Hashtable本身在Add,Update,Remove时会锁Hashtable.SyncRoot(Synchronized后的),所以锁Hashtable.SyncRoot可以减少自己手动的一些控制。
3.要想安全的话就需要锁定。
linfengcyl
2006-01-11
打赏
举报
回复
lock( myCollection.SyncRoot )和lock(myCollection)的区别MSDN上说了,是前者可以用于派生类的同步访问,而后者不可以。而Hashtable.Synchronized()是线程安全的同步。
lidong6
2006-01-11
打赏
举报
回复
我认为lock( myCollection.SyncRoot ) 和lock(myCollection)是一样的,不明白为什么要多此一举,看到MSDN上有这么一句:
同步代码必须在 Hashtable 的 SyncRoot 上执行操作,而不是直接在 Hashtable 上执行. 看样子微软建议使用lock( myCollection.SyncRoot ).
深入解析
Hashtable
的
线程同步
问题
在我们最熟悉的概念里,我们都知道相对于Hashmap而言,
Hashtable
的处理效率更慢,因为
Hashtable
引入了多线程安全...然而,在真正的应用开发上,当我们需要用到多线程的
Hashtable
时,我们都会在创建的时候引入同步概念,
Hashtable
如何保证线程安全
Hashtable
如何保证线程安全前言
Hashtable
中的常用变量...
Hashtable
是同步的,所有的读写操作都进行了锁保护,是线程安全的。
Hashtable
的底层是数组+链表实现的
Hashtable
中的常用变量 private transient Entry<?,?&
C#中
Hashtable
用法详解(包括
线程同步
)
使用
HashTable
的情况:1.数据量很大 2.高频查询 3.数据类型不唯一 基本操作: //添加一个keyvalue键值对:
Hashtable
Object.Add(key,value); //移除某个keyvalue键值对:
Hashtable
Object.Remove(key); //移除所有...
java 同步
hashtable
_java –
Hashtable
:为什么get方法同步?
如果读取未同步,则可以在执行读取...但是,即使在另一个线程修改
Hashtable
时get不会崩溃,synchronized关键字还有另一个重要方面,即缓存同步.让我们使用一个简化的例子:class Flag {bool value;bool get() { return...
Hashtable
多线程遍历
问题
If a thread-safe implementation is not needed, it is recommended to use HashMap in place of code
Hashtable
. If a thread-safe highly-concurrent implementation is desired, then it is recommended to use....
C#
110,535
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章