Более эффективно заблокировать или попытаться поймать словарь в потоке (.NET)

У меня есть общий словарь, который я использую в качестве кэша в многопоточном .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;
   }
}
6
задан barfoon 4 August 2011 в 00:47
поделиться