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

Комментарии

Этот метод не учитывает порядок рекурсии. Например, если поток вводит блокировку в обновляемом режиме, а затем вводит блокировку в режиме чтения, порядок выхода потока из двух режимов не имеет значения. Если блокировка разрешает рекурсию, поток может ввести блокировку в режиме записи, а затем ввести ее рекурсивно в режиме чтения; Порядок выхода потока из режима чтения и режима записи не имеет значения.

Выход из блокировки может сигнализировать о других потоках ожидания.

Применяется к