Блокировать ConcurrentDictionary при использовании AddOrUpdate?C#

Место общения программистов C#
Ответить
Anonymous
 Блокировать ConcurrentDictionary при использовании AddOrUpdate?

Сообщение Anonymous »

Я использую ConcurrentDictioanry для доступа к некоторым данным во многих потоках.

Я прочитал в этой статье (прокрутите вниз ), что метод AddOrUpdate не выполняется в блокировке, поэтому это может поставить под угрозу потокобезопасность.

Мой код выглядит следующим образом:

Код: Выделить всё

//keys and bar are not the concern here
ConcurrentDictioanry foo = new ...;
foreach(var key in keys) {
foo.AddOrUpdate(key, new HashSet { bar }, (key, val) => {
val.Add(bar);
return val;
});
}
Должен ли я заключить вызов AddOrUpdate в оператор блокировки, чтобы убедиться, что все потокобезопасно?

Подробнее здесь: https://stackoverflow.com/questions/124 ... update-ing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»