Partilhar via


Função KeRcuReadLock (wdm.h)

A função KeRcuReadLock insere uma seção crítica do lado de leitura RCU (Read-Copy-Update) no domínio RCU padrão. Essa função fixa o thread de chamada ao processador atual e impede que ele seja preempido pelo agendador.

Sintaxe

VOID KeRcuReadLock();

Valor de retorno

None

Observações

O KeRcuReadLock fornece sincronização de baixo custo para ler estruturas de dados compartilhadas sem sobrecarga de bloqueio tradicional. Ele só acessa dados locais à CPU atual, tornando-os extremamente eficientes.

As seções críticas do lado de leitura do RCU permitem que vários threads acessem simultaneamente estruturas de dados compartilhadas, garantindo que os gravadores possam atualizar os dados com segurança usando protocolos RCU. As seções críticas do lado da leitura do RCU podem ser aninhadas.

KeRcuReadLock sempre deve ser emparelhado com uma chamada correspondente para KeRcuReadUnlock.

Essa função não pode falhar e sempre é bem-sucedida.

Em uma seção crítica do lado da leitura do RCU:

  • O thread de chamada tem a garantia de que as estruturas de dados protegidas pelo RCU não serão recuperadas.
  • Vários leitores podem acessar os mesmos dados simultaneamente sem bloquear uns aos outros.
  • O thread deve acessar apenas estruturas de dados protegidas pelo RCU usando primitivas de desreferência RCU apropriadas.
  • O thread não deve executar operações que possam causar atrasos estendidos.

Essa função pode ser chamada de qualquer IRQL. Se for chamada abaixo de DISPATCH_LEVEL, a função aumentará automaticamente o IRQL para DISPATCH_LEVEL. O IRQL original é restaurado quando o KeRcuReadUnlock correspondente é chamado

O thread de chamada é fixado ao processador atual para manter a semântica RCU. Se o processador estiver marcado como ocioso, a função ajustará os contadores de estado ociosos adequadamente. O agendador é impedido de prever o thread enquanto estiver na seção crítica.

A função usa o domínio RCU padrão, tornando-o adequado para casos de uso de RCU simples. Para cenários mais complexos que exigem domínios de sincronização personalizados, use KeSrcuReadLock com uma partição SRCU explícita.

Requirements

Requirement Value
Cliente mínimo suportado Windows 11, versão 24H2
Servidor mínimo compatível Windows Server 2025
da Plataforma de Destino Universal
Header wdm.h (inclua Wdm.h)
Library NtosKrnl.lib
IRQL Qualquer nível (Consulte Comentários)

Consulte também

KeRcuReadUnlock

KeRcuSynchronize

KeSrcuReadLock

KeSrcuReadUnlock

KeSrcuAllocate