Я использую статический параллельный словарь в веб-api и к нему обращаются через пользователей.Нужно ли применять блокировку даже при доступе к параллельному словарю
Я использую следующие методы: Являются ли эти методы безопасными для всех потоков? Или мне нужно добавить lock()
, хотя это ConccurentDictionary
?
В принципе, к нему обращаются через пользователя, тогда он должен работать соответствующим образом, поскольку этот словарь содержит коллекцию для каждого пользователя и полагается на это.
static ConcurrentDictionary<string, SApp> SAppFarm= new ConcurrentDictionary<string, SApp>();
.TryRemove(_sessionUser,out s);
.TryAdd(_sessionUser, r);
.GetOrAdd(sessionUser, application);
https://msdn.microsoft.com/en-us/library/dd287191(v=vs.110).aspx#Thread%20Safety, так что нет необходимости блокировать методы, указанные вами – prof1990
От MSDN: _Рекомендует поточно-безопасный сбор пар ключ/значение, к которым можно получить доступ несколькими потоками одновременно._ – Fabio
Я, его потокобезопасный, я прошел через msdn, но не уверен, что все методы слишком поддерживают его. В моем случае это будет только один доступ к ключам за поток и добавить/обновить его значение в том же потоке, тогда я не думаю, что беспокоиться даже об операции изменения. Каждый ключ для отдельного потока запросов пользователя. и каждый пользователь работает над объектом этого ключа для операции добавления/редактирования. – dsi