Compartilhar via


ReaderWriterLockSlim.ExitReadLock Método

Definição

Reduz a contagem de recursão para o modo de leitura e sai do modo de leitura se a contagem resultante é 0 (zero).

public:
 void ExitReadLock();
public void ExitReadLock ();
member this.ExitReadLock : unit -> unit
Public Sub ExitReadLock ()

Exceções

O thread atual não entrou no bloqueio no modo de leitura.

Exemplos

O exemplo a seguir mostra como usar um finally bloco para executar o ExitReadLock método, garantindo que o chamador saia do modo de leitura. O método mostrado no exemplo recupera o valor associado a uma chave. Se a chave não for encontrada, a exceção gerada pelo interior Dictionary<TKey,TValue> poderá encerrar o método. O EnterReadLock método é usado para inserir o modo de leitura.

Esse código faz parte de um exemplo maior fornecido para a ReaderWriterLockSlim classe.

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

Comentários

Esse método não é sensível à ordem de recursão. Por exemplo, se um thread entra em um bloqueio no modo atualizável e entra no bloqueio no modo de leitura, a ordem na qual o thread sai dos dois modos não importa. Se um bloqueio permitir a recursão, um thread poderá inserir o bloqueio no modo de gravação e inseri-lo recursivamente no modo de leitura; a ordem na qual o thread sai do modo de leitura e o modo de gravação não importa.

Sair do bloqueio pode sinalizar outros threads de espera.

Aplica-se a