У меня есть общий словарь, который я использую в качестве кэша в многопоточном .NET-проекте (C #). Я буду делать много чтений из словаря (потенциально сотни или больше в секунду в часы пик).
У меня есть простой метод Get (int id), который должен возвращать CustomObject, если он находится в кеше, или null в противном случае .
Мой вопрос: Быстрее / эффективнее заблокировать словарь или просто использовать блок try / catch?
Предполагая, что словарь хранится в переменной с именем «dic».
Пример блокировки:
public CustomObject Get(int id)
{
lock(dic)
{
if (dic.ContainsKey(id))
return dic[id];
}
return null;
}
Пример Try / Catch:
public CustomObject Get(int id)
{
try
{
return dic[id];
}
catch
{
return null;
}
}