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
Комментарии
Этот метод не учитывает порядок рекурсии. Например, если поток входит в блокировку в обновляемом режиме, а затем переходит в режиме чтения, порядок выхода потока из этих двух режимов не имеет значения. Если блокировка допускает рекурсию, поток может перейти на блокировку в режиме записи, а затем ввести ее рекурсивно в режиме чтения; Порядок выхода потока из режима чтения и записи не имеет значения.
Выход из блокировки может сигнализировать о других ожидающих потоках.