即使访问并发字典,我是否必须应用锁定

时间:2017-01-12 07:26:47

标签: c# asp.net multithreading asp.net-web-api concurrentdictionary

我在web api中使用静态并发字典,并且可以跨用户访问它。

我正在使用以下方法:这些方法是否都是线程安全的?或者我是否必须添加lock(),即使它是ConccurentDictionary

基本上,它被整个用户访问,然后它应该能够相应地工作,因为这个字典包含每个用户的集合,并且它依赖于它。

static ConcurrentDictionary<string, SApp> SAppFarm= new ConcurrentDictionary<string, SApp>();    

.TryRemove(_sessionUser,out s);
.TryAdd(_sessionUser, r);
.GetOrAdd(sessionUser, application);

1 个答案:

答案 0 :(得分:3)

ConcurrentDictionary是文档here是线程安全的。其中包括TryRemoveTryAddGetOrAdd方法。

因此不需要锁定。请记住,线程安全是关于。如果为不同线程中的给定键更改相同的值对象,则必须关注此更改操作的线程安全性。