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