我在web api中使用静态并发字典,并且可以跨用户访问它。
我正在使用以下方法:这些方法是否都是线程安全的?或者我是否必须添加lock()
,即使它是ConccurentDictionary
?
基本上,它被整个用户访问,然后它应该能够相应地工作,因为这个字典包含每个用户的集合,并且它依赖于它。
static ConcurrentDictionary<string, SApp> SAppFarm= new ConcurrentDictionary<string, SApp>();
.TryRemove(_sessionUser,out s);
.TryAdd(_sessionUser, r);
.GetOrAdd(sessionUser, application);
答案 0 :(得分:3)
ConcurrentDictionary
是文档here是线程安全的。其中包括TryRemove
,TryAdd
和GetOrAdd
方法。
因此不需要锁定。请记住,线程安全是关于键。如果为不同线程中的给定键更改相同的值对象,则必须关注此更改操作的线程安全性。