InitializeCriticalSection-Funktion (synchapi.h)
Initialisiert ein kritisches Abschnittsobjekt.
Syntax
void InitializeCriticalSection(
[out] LPCRITICAL_SECTION lpCriticalSection
);
Parameter
[out] lpCriticalSection
Ein Zeiger auf das Kritische Abschnittsobjekt.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Windows Server 2003 und Windows XP: In Situationen mit wenig Arbeitsspeicher kann InitializeCriticalSection eine STATUS_NO_MEMORY Ausnahme auslösen. Ab Windows Vista wurde diese Ausnahme beseitigt, und InitializeCriticalSection ist immer erfolgreich, auch in Situationen mit wenig Arbeitsspeicher.
Hinweise
Die Threads eines einzelnen Prozesses können ein kritisches Abschnittsobjekt für die Synchronisierung mit gegenseitigem Ausschluss verwenden. Es gibt keine Garantie für die Reihenfolge, in der Threads den Besitz des kritischen Abschnitts erhalten, aber das System ist für alle Threads fair.
Der Prozess ist für die Zuweisung des von einem kritischen Abschnittsobjekt verwendeten Arbeitsspeichers verantwortlich. Dies kann durch Deklarieren einer Variablen vom Typ CRITICAL_SECTION. Vor der Verwendung eines kritischen Abschnitts muss ein Thread des Prozesses das -Objekt initialisieren.
Nachdem ein kritisches Abschnittsobjekt initialisiert wurde, können die Threads des Prozesses das Objekt in der Funktion EnterCriticalSection, TryEnterCriticalSection oder LeaveCriticalSection angeben, um gegenseitig ausschließenden Zugriff auf eine freigegebene Ressource zu ermöglichen. Verwenden Sie für eine ähnliche Synchronisierung zwischen den Threads verschiedener Prozesse ein Mutex-Objekt.
Ein kritisches Abschnittsobjekt kann nicht verschoben oder kopiert werden. Der Prozess darf auch das Objekt nicht ändern, sondern muss es als logisch undurchsichtig behandeln. Verwenden Sie nur die Funktionen für kritische Abschnitte, um kritische Abschnittsobjekte zu verwalten. Wenn Sie die Verwendung des kritischen Abschnitts abgeschlossen haben, rufen Sie die DeleteCriticalSection-Funktion auf .
Ein kritisches Abschnittsobjekt muss gelöscht werden, bevor es neu initialisiert werden kann. Das Initialisieren eines kritischen Abschnitts, der bereits initialisiert wurde, führt zu nicht definiertem Verhalten.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | synchapi.h (enthalten Windows.h unter Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |