Mr.*_*oor 1 .net c# dictionary base-class-library
只要未修改集合,Dictionary就可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.
这就是MSDN所说的.
如果没有必要,我不想使用ConcurrentDictionary
我假设,如果只有一个线程执行写入操作Dictionary<T,K>,则其他线程可以安全地同时执行简单的读取操作(如TryGetValue不枚举)而不获取锁定,我是否正确?
我假设,如果只有一个线程在Dictionary上执行编写器操作,则其他线程可以安全地同时执行简单的读取操作(如TryGetValue而不是枚举)而无需获取锁定
不,你的假设是错的.只有当没有作者修改字典时才安全,而不是当你有一个作家时.
ReaderWriterLockSlim完全被设计用于此场景.这就是说我只使用ConcurrentDictionary而不是重新发明轮子.
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |