В классе ReaderWriterLockSlim написано много статей, которые позволяют многократно читать и писать. Все из них (по крайней мере, что я нашел) рассказывают, как использовать его без особого объяснения, почему и как это работает. Стандартный пример кода:
lock.EnterUpgradeableReadLock();
try
{
   if (test if write is required)
   {
      lock.EnterWriteLock();
      try
      {
          change the resourse here.
      }
      finally
      {
         lock.ExitWriteLock();
      }
   }
}
finally
{
   lock.ExitUpgradeableReadLock();
}
Возникает вопрос: если обновляемая блокировка разрешает только один поток вводить его раздел, почему я должен вызвать метод EnterWriteLock внутри? Что произойдет, если я этого не сделаю? Или что произойдет, если вместо EnterUpgradeableReadLock я вызову EnterWriteLock и напишу на ресурс без использования возможности обновления блокировки вообще?
