Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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) |