在Asp.Net中并发用户访问的字典对象

本文关键字:访问 字典 对象 用户 并发 Asp Net | 更新日期: 2023-09-27 18:06:26

网页我有一个静态的字典对象,值可以添加和检索,当100的并发用户访问页面有任何机会我的字典对象可能被锁定/抛出错误?

用户1)添加不存在的新值2)检索现有值。他们不能修改/删除

在Asp.Net中并发用户访问的字典对象

如果你使用ConcurrentDictionary,那么所有对Dictionary的访问都是线程安全的,并且实现非常高效-大多数操作都是无锁的。

有关一些解释和示例源代码,请参阅http://geekswithblogs.net/BlackRabbitCoder/archive/2011/02/17/c.net-little-wonders-the-concurrentdictionary.aspx

当100个并发用户访问页面时,我的字典对象是否有可能被锁定/抛出错误?

是的,有很大的机会。

参见MSDN的Dictionary(TKey, TValue)关于线程安全的说明:

只要不修改集合,Dictionary可以同时支持多个reader。即便如此,在集合中枚举本质上也不是线程安全的过程。在枚举与写访问竞争的极少数情况下,必须在整个枚举期间锁定集合。要允许多个线程访问集合进行读写,必须实现自己的同步。

有关线程安全的替代方法,请参见ConcurrentDictionary。

Public static(在Visual Basic中共享)的成员是线程安全的。
考虑使用ConcurrentDictionary。