ReaderWriterLockSlim.ExitReadLock Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Уменьшает число рекурсий для режима чтения и завершает режим чтения, если результирующее число равно 0 (ноль).
public:
void ExitReadLock();
public void ExitReadLock();
member this.ExitReadLock : unit -> unit
Public Sub ExitReadLock ()
Исключения
Текущий поток не вошел в блокировку в режиме чтения.
Примеры
В следующем примере показано, как использовать блок для выполнения finally метода, гарантируя, что вызывающий ExitReadLock объект выходит из режима чтения. Метод, показанный в примере, извлекает значение, связанное с ключом. Если ключ не найден, исключение, вызываемое внутренним Dictionary<TKey,TValue> , разрешено завершить метод. Метод EnterReadLock используется для ввода режима чтения.
Этот код является частью более крупного примера, предоставленного ReaderWriterLockSlim для класса.
private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
private Dictionary<int, string> innerCache = new Dictionary<int, string>();
Private cacheLock As New ReaderWriterLockSlim()
Private innerCache As New Dictionary(Of Integer, String)
public string Read(int key)
{
cacheLock.EnterReadLock();
try
{
return innerCache[key];
}
finally
{
cacheLock.ExitReadLock();
}
}
Public Function Read(ByVal key As Integer) As String
cacheLock.EnterReadLock()
Try
Return innerCache(key)
Finally
cacheLock.ExitReadLock()
End Try
End Function
Комментарии
Этот метод не учитывает порядок рекурсии. Например, если поток вводит блокировку в обновляемом режиме, а затем вводит блокировку в режиме чтения, порядок выхода потока из двух режимов не имеет значения. Если блокировка разрешает рекурсию, поток может ввести блокировку в режиме записи, а затем ввести ее рекурсивно в режиме чтения; Порядок выхода потока из режима чтения и режима записи не имеет значения.
Выход из блокировки может сигнализировать о других потоках ожидания.