AsyncReaderWriterLock Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Um bloqueio sem bloqueio que permite acesso simultâneo, acesso exclusivo ou simultâneo com capacidade de atualização para acesso exclusivo.
public ref class AsyncReaderWriterLock : IDisposable, Microsoft::VisualStudio::Threading::IHangReportContributor
public class AsyncReaderWriterLock : IDisposable, Microsoft.VisualStudio.Threading.IHangReportContributor
type AsyncReaderWriterLock = class
interface IHangReportContributor
interface IDisposable
Public Class AsyncReaderWriterLock
Implements IDisposable, IHangReportContributor
- Herança
-
AsyncReaderWriterLock
- Derivado
- Implementações
Comentários
Precisamos usar uma tarefa awaitable personalizada em vez de simplesmente retornar Task {LockReleaser} porque precisamos definir os dados de CallContext no contexto da pessoa que está recebendo o bloqueio, o que exige que possamos executar o código no início da continuação (quer seja que geremos ou não).
Construtores
| AsyncReaderWriterLock() |
Inicializa uma nova instância da classe AsyncReaderWriterLock. |
| AsyncReaderWriterLock(Boolean) |
Inicializa uma nova instância da classe AsyncReaderWriterLock. |
Propriedades
| AmbientLock |
Obtém o bloqueio mantido pelo contexto de execução do chamador. |
| CanCurrentThreadHoldActiveLock |
Obtém um valor que indica se o thread atual tem permissão para manter um bloqueio ativo. |
| CaptureDiagnostics |
Obtém ou define um valor que indica se recursos adicionais devem ser gastos para coletar informações que seriam úteis no diagnóstico de deadlocks, etc. |
| Completion |
Obtém uma tarefa cuja conclusão sinaliza que esse bloqueio não emitirá mais bloqueios. |
| IsAnyLockHeld |
Obtém um valor que indica se qualquer tipo de bloqueio é mantido pelo chamador e pode ser usado imediatamente de acordo com o contexto do chamador. |
| IsAnyPassiveLockHeld |
Obtém um valor que indica se qualquer tipo de bloqueio é mantido pelo chamador sem considerar a compatibilidade de bloqueio do contexto do chamador. |
| IsPassiveReadLockHeld |
Obtém um valor que indica se um bloqueio de leitura é mantido pelo chamador sem considerar a compatibilidade de bloqueio do contexto do chamador. |
| IsPassiveUpgradeableReadLockHeld |
Obtém um valor que indica se um bloqueio de leitura atualizável é mantido pelo chamador sem considerar a compatibilidade de bloqueio do contexto do chamador. |
| IsPassiveWriteLockHeld |
Obtém um valor que indica se um bloqueio de gravação é mantido pelo chamador sem considerar a compatibilidade de bloqueio do contexto do chamador. |
| IsReadLockHeld |
Obtém um valor que indica se o chamador tem um bloqueio de leitura. |
| IsUnsupportedSynchronizationContext |
Obtém um valor que indica se o SynchronizationContext atual é um que não tem suporte nesse bloqueio. |
| IsUpgradeableReadLockHeld |
Obtém um valor que indica se o chamador tem um bloqueio de leitura atualizável. |
| IsWriteLockHeld |
Obtém um valor que indica se o chamador contém um bloqueio de gravação. |
| NoMessagePumpSynchronizationContext |
Obtém um SynchronizationContext que, quando aplicado, suprime qualquer bomba de mensagem que possa ser executada durante os blocos síncronos do thread de chamada. |
| SyncObject |
Obtém o objeto usado para sincronizar o acesso aos campos desta instância. |
Métodos
| Complete() |
Faz com que novas solicitações de bloqueio de nível superior sejam rejeitadas e a Completion tarefa para fazer a transição para um estado concluído após a liberação de qualquer bloqueio emitido. |
| Dispose() | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. |
| Dispose(Boolean) |
Descarta recursos gerenciados e não gerenciados mantidos por essa instância. |
| GetAggregateLockFlags() |
Retorna a agregação dos sinalizadores de bloqueio para todos os bloqueios aninhados. |
| GetHangReport() |
Contribui com dados para um relatório de suspensão. |
| GetTaskSchedulerForReadLockRequest() |
Obtenha o Agendador de tarefas para executar a continuação quando o bloqueio for adquirido. O AsyncReaderWriterLock usa um especial SynchronizationContext para lidar com bloqueios de execusive e ignorará o Agendador de tarefas fornecido, portanto, isso só é usado em um cenário de bloqueio de leitura. Esse método é chamado dentro do contexto de execução para aguardar o bloqueio de leitura, para que possa ser selecionado TaskScheduler com base no contexto de execução atual. Observação: o Agendador de tarefas só é usado quando o bloqueio é emitido posteriormente. Se o bloqueio for emitido imediatamente quando CanCurrentThreadHoldActiveLock retornar true, ele será ignorado. |
| HideLocks() |
Impede o uso ou visibilidade dos bloqueios do chamador até que o valor retornado seja Descartado. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Verifica se os sinalizadores agregados de todos os bloqueios na pilha de bloqueio atendem aos sinalizadores especificados. |
| OnBeforeExclusiveLockReleasedAsync() |
Acionado quando o último bloqueio de gravação está prestes a ser liberado. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Acionado quando qualquer bloqueio está sendo liberado. |
| OnBeforeWriteLockReleased(Func<Task>) |
Registra um retorno de chamada a ser invocado quando o bloqueio de gravação mantido pelo chamador está prestes a ser lançado (bloqueio de gravação externo). |
| OnCriticalFailure(Exception) |
Chamado quando o bloqueio detecta um erro interno ou um padrão de uso inválido que indica uma falha grave que deve ser imediatamente relatada para o aplicativo e/ou que o processo Evite travamentos ou dados corrompidos. |
| OnCriticalFailure(String) |
Chamado quando o bloqueio detecta um erro interno ou um padrão de uso inválido que indica uma falha grave que deve ser imediatamente relatada para o aplicativo e/ou que o processo Evite travamentos ou dados corrompidos. |
| OnExclusiveLockReleasedAsync() |
Chamado depois que um bloqueio exclusivo é liberado, mas antes que qualquer pessoa tenha a oportunidade de inserir o bloqueio. |
| OnUpgradeableReadLockReleased() |
Chamado quando um bloqueio de leitura atualizável de nível superior é liberado, não deixando nenhum bloqueio restante (gravação). |
| ReadLockAsync(CancellationToken) |
Obtém um bloqueio de leitura, aguardando assincronamente o bloqueio caso ele não esteja disponível imediatamente. |
| UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Obtém um bloqueio de leitura, aguardando assincronamente o bloqueio caso ele não esteja disponível imediatamente. |
| UpgradeableReadLockAsync(CancellationToken) |
Obtém um bloqueio de leitura atualizável, aguardando assincronamente o bloqueio se ele não estiver disponível imediatamente. |
| WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Obtém um bloqueio de gravação, aguardando assincronamente o bloqueio caso ele não esteja disponível imediatamente. |
| WriteLockAsync(CancellationToken) |
Obtém um bloqueio de gravação, aguardando assincronamente o bloqueio caso ele não esteja disponível imediatamente. |
Implantações explícitas de interface
| IHangReportContributor.GetHangReport() |
Contribui com dados para um relatório de suspensão. |
Aplica-se a
Acesso thread-safe
Esse tipo é thread-safe para todos os membros.