Какая разница между MemoryCache.Add и MemoryCache.Set?
Я прочитал документацию MSDN, но на самом деле не понял.
Я считаю, что поведение Set означает "заменить существующее или добавить" (атомарно).
Правильно ли это?
Ответ 1
Add ничего не делает (возвращает false), если уже есть значение для этого ключа. Set при необходимости вставляет или обновляет.
Remove + Add оставит промежуток посередине, когда другой поток, запрашивающий этот ключ, не получит никакой подсказки (Set does not; swap обычно является атомарным); как таковой, в то время как Set имеет тот же конечный результат как Remove + Add, разница в механизме важна, поскольку это может повлиять на других вызывающих абонентов.