Freigeben über


KeRcuReadLock-Funktion (wdm.h)

Die KeRcuReadLock-Funktion gibt einen leseseitigen kritischen Abschnitt (Lese-Copy-Update) in der Standard-RCU-Domäne ein. Mit dieser Funktion wird der aufrufende Thread an den aktuellen Prozessor angeheftet und verhindert, dass er vom Scheduler vorgebeutet wird.

Syntax

VOID KeRcuReadLock();

Rückgabewert

Nichts

Bemerkungen

KeRcuReadLock bietet kostengünstige Synchronisierung zum Lesen freigegebener Datenstrukturen ohne herkömmlichen Sperraufwand. Er greift nur lokal auf die aktuelle CPU zu und macht es extrem effizient.

RCU-schreibgeschützte kritische Abschnitte ermöglichen es mehreren Threads, gleichzeitig auf freigegebene Datenstrukturen zuzugreifen und sicherzustellen, dass Autoren die Daten mithilfe von RCU-Protokollen sicher aktualisieren können. RCU-leseseitige kritische Abschnitte können geschachtelt werden.

KeRcuReadLock muss immer mit einem entsprechenden Aufruf von KeRcuReadUnlock gekoppelt werden.

Diese Funktion kann nicht fehlschlagen und ist immer erfolgreich.

Innerhalb eines RCU-abschnitts mit Lesezugriff:

  • Der aufrufende Thread ist garantiert, dass RCU-geschützte Datenstrukturen nicht zurückgefordert werden.
  • Mehrere Leser können gleichzeitig auf dieselben Daten zugreifen, ohne einander zu blockieren.
  • Der Thread sollte nur auf RCU-geschützte Datenstrukturen zugreifen, indem entsprechende RCU-Ableitungsgrundtypen verwendet werden.
  • Der Thread darf keine Vorgänge ausführen, die zu erweiterten Verzögerungen führen können.

Diese Funktion kann von jedem IRQL aufgerufen werden. Wenn er unter DISPATCH_LEVEL aufgerufen wird, löst die Funktion automatisch IRQL auf DISPATCH_LEVEL aus. Die ursprüngliche IRQL wird wiederhergestellt, wenn das entsprechende KeRcuReadUnlock aufgerufen wird.

Der aufrufende Thread wird an den aktuellen Prozessor angeheftet, um die RCU-Semantik aufrechtzuerhalten. Wenn der Prozessor im Leerlauf markiert ist, passt die Funktion die Leerlaufzustandszähler entsprechend an. Der Scheduler wird daran gehindert, den Thread im kritischen Abschnitt vorab zu vermeiden.

Die Funktion verwendet die Standard-RCU-Domäne, sodass sie für einfache RCU-Anwendungsfälle geeignet ist. Für komplexere Szenarien, die benutzerdefinierte Synchronisierungsdomänen erfordern, verwenden Sie KeSrcuReadLock mit einer expliziten SRCU-Partition.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 11, Version 24H2
Mindestanforderungen für unterstützte Server Windows Server 2025
Zielplattform Universal
Header wdm.h (include Wdm.h)
Library NtosKrnl.lib
IRQL Beliebige Ebene (siehe Hinweise)

Siehe auch

KeRcuReadUnlock

KeRcuSynchronize

KeSrcuReadLock

KeSrcuReadUnlock

KeSrcuAllocate