Итак, у меня есть ситуация, когда у меня может быть много, много чтений и только случайная запись на ресурс, разделяемый между несколькими потоками.
Долгое время я читал о ReaderWriterLock и читал о ReaderWriterGate, который пытается смягчить проблему, когда многие записи входящий в козырь читает и болит производительность. Однако теперь мне стало известно о ReaderWriterLockSlim...
Из документов, я считаю, что в один только момент может быть только один поток в "обновляемом режиме". В ситуации, когда единственный доступ, который я использую, EnterUpgradeableReadLock() (что подходит для моего сценария), есть большая разница только с придерживаясь lock(){}?
Здесь выдержка:
Поток, который пытается ввести модули с обновляемым режимом, если есть уже поток в обновляемом режиме, если есть очереди, ожидающие входа режим записи, или если есть один поток в режиме записи.
Или политика рекурсии имеет значение для этого?