Может ConcurrentDictionary.TryAdd потерпеть неудачу?
Это скорее академический вопрос... но может ConcurrentDictionary.TryAdd провал? И если да, то в каких случаях и почему?
3 ответа:
да может, вот условия (от msdn):
- ArgumentNullException - когда ключ является нулевой ссылкой
- OverflowException - при достижении максимального количества элементов
- возвращает ложные если элемент с тем же ключом уже существует
просто повторюсь, это не имеет ничего общего с параллелизмом. Если вы беспокоитесь о двух потоках, вставляющих элемент в тогда же может произойти следующее:
- обе вставки работают нормально, если клавиши разные
- одна вставка работает нормально и возвращает true, другая вставка терпит неудачу (без исключения) и возвращает false. Это произойдет, если два потока пытаются вставить элемент с тем же ключом и в основном только один победит другой свободный.
конечно, может. Если ключ уже существует, метод вернет false.
Ref:http://msdn.microsoft.com/en-us/library/dd267291.aspx
Возвращаемое Значение система типов.Логический true, если пара ключ/значение была успешно добавлена в ConcurrentDictionary. если ключ уже существует, этот метод возвращает значение false.