【发布时间】:2017-01-12 07:26:46
【问题描述】:
我在 web api 中使用了一个静态并发字典,它可以跨用户访问。
我正在使用以下方法:这些方法都是线程安全的吗?还是我必须添加lock(),即使它是ConccurentDictionary?
基本上,它是由整个用户访问的,然后它应该能够相应地工作,因为这个字典包含每个用户的集合并且它依赖于它。
static ConcurrentDictionary<string, SApp> SAppFarm= new ConcurrentDictionary<string, SApp>();
.TryRemove(_sessionUser,out s);
.TryAdd(_sessionUser, r);
.GetOrAdd(sessionUser, application);
【问题讨论】:
-
msdn.microsoft.com/en-us/library/… 所以不,你提到的方法不需要锁定
-
来自 MSDN:表示可由多个线程同时访问的键/值对的线程安全集合。
-
是的,它的线程安全,我通过 msdn 但是,不确定所有方法都支持它。对于我的情况,每个线程只有一个键访问,然后在同一个线程中添加/更新它的值我想即使改变操作也没什么好担心的。每个键用于单独的用户请求线程。并且每个用户都为该键的对象工作以进行添加/编辑操作。
标签: c# asp.net multithreading asp.net-web-api concurrentdictionary