Если вы блокируете значения в ConcurrentDictionary, рекомендуется
Я пытаюсь найти лучшее решение (производительность и точность), чтобы иметь статический список объектов в веб-сервисе.
Некоторые веб-методы будут вносить изменения в эти объекты и возвращать состояние объекта после внесения изменений, а другие будут запрашивать текущее состояние.
Это должно быть точным на каждой операции, так как это связано с деньгами. Этот веб-сервис будет засыпан запросами из разных областей нашего масштабного проекта.
Я смотрел на ConcurrentDictionary и, читая некоторые другие вопросы SO, я наткнулся на следующий ответ: /questions/24700240/net-blokirovka-slovarya-i-concurrentdictionary/24700251#24700251
Следующий абзац - это то, чего я не хочу:
Теперь рассмотрим это. В магазине с одним клерком, что если вы доберетесь до самого конца очереди и спросите у клерка "У вас есть туалетная бумага", он скажет "Да", а затем вы скажете: "Хорошо, я" Я перезвоню вам, когда узнаю, сколько мне нужно ", и к тому времени, когда вы вернетесь к началу очереди, магазин, конечно, может быть распродан. Этот сценарий не предотвращается потокобезопасной коллекцией.
По сути, я спрашиваю, должен ли я блокировать значения в ConcurrentDictionary, или это разрушает всю его цель? Если я должен / мог, каков наилучший способ сделать это, если нет, какая у меня альтернатива?