首页 新闻 会员 周边

C# Hashtable在一个线程中不断写入的情况下,在其他线程执行Hashtable.CopyTo函数是否安全

0
悬赏园豆:5 [已解决问题] 解决于 2015-11-28 17:48

C# Hashtable在一个线程中不断写入的情况下,在其他线程执行Hashtable.CopyTo函数拷贝到列表的时候是否安全

大芝麻的主页 大芝麻 | 初学一级 | 园豆:4
提问于:2015-10-04 14:41
< >
分享
最佳答案
0

Hashtable is thread safe for use by multiple reader threads and a single writing thread."> Hashtable 是线程安全的,可由多个读取器线程和一个写入线程使用。 Hashtable.">多线程使用时,如果只有一个线程执行写入(更新)操作,则它是线程安全的,从而允许进行无锁定的读取(若编写器序列化为 Hashtable)。 Hashtable must be done through the wrapper returned by the Synchronized method, provided that there are no threads reading the Hashtable object.">若要支持多个编写器,如果没有任何线程在读取 Hashtable 对象,则对 Hashtable 的所有操作都必须通过 Synchronized 方法返回的包装完成。

从头到尾对一个集合进行枚举本质上并不是一个线程安全的过程。 即使一个集合已进行同步,其他线程仍可以修改该集合,这将导致枚举数引发异常。 若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。

 

收获园豆:5
zhoumy | 小虾三级 |园豆:603 | 2015-10-08 09:13
其他回答(1)
0

你这样一直写入,再读取是不安全的,你当然需要做处理

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-10-06 10:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册