Вы не можете читать, когда происходит атомарная операция.
у глобальный обработчик ошибок / регистратор для приложений, работающих в Windows Azure. Когда в приложении возникает ошибка, выполняется ряд операций, которые должны выполняться атомарно. Мне нужно, чтобы ошибка не регистрировалась, пока предыдущая не будет завершена. Между тем, я хочу, чтобы чтения журналов происходили по мере необходимости.
Моя первоначальная мысль заключалась в использовании монитора / блокировки и блокировки только записи ошибок. Таким образом, чтение вообще не блокируется. Мне было интересно, хотя будет ли более подходящим ReaderWriterLockSlim. Я не могу сказать, что ядействительно понять ценность между одним подходом против другого.
Должен ли я создать ReaderWriterLockSlim и сделать что-то вроде следующего ниже (с чтениями, заключенными в EnterReadLock) ...
public static void LogError(Exception exception)
{
_lock.EnterWriteLock();
...
_lock.ExitWriteLock();
}
Или я просто делаю что-то вроде следующего, блокируя только разделы записи:
public static void LogError(Exception exception)
{
lock (someStaticLock)
{
...
}
}
Любые мысли / советы будут высоко ценится.