У меня нет всех твоих ответов, но я попробую:
Оператор блокировки в c # является синтаксическим сахаром для вызова Monitor.Enter и Monitor.Exit. В результате только один поток может получить доступ к коду внутри блокировки одновременно.
lock()
{
//only one thread can access this code at a time
}
Проблема в том, что многократное чтение безвредно, но блокировка () все равно блокирует. ReaderWriterLockSlim допускает многократное чтение, только одну запись. Это попытка повысить эффективность.
Политика рекурсии - это то, что вы должны указать - по умолчанию она отключена. Не слишком много знаю за этим, но надеюсь, что это немного поможет.