Freigeben über


Synchronisierungsobjekte

Ein Synchronisierungsobjekt ist ein Objekt, dessen Handle in einer der Wartefunktionen angegeben werden kann, die Ausführung mehrerer Threads zu koordinieren. Mehrere Prozesse können über ein Handle für dasselbe Synchronisierungsobjekt verfügen, wodurch die Interprocess-Synchronisierung möglich wird.

Die folgenden Objekttypen werden ausschließlich für die Synchronisierung bereitgestellt.

Art Beschreibung
Ereignis Benachrichtigt mindestens einen Wartethread, dass ein Ereignis aufgetreten ist. Weitere Informationen finden Sie unter Event Objects.
Mutex Kann jeweils nur einem Thread zugeordnet werden, sodass Threads den sich gegenseitig ausschließenden Zugriff auf eine freigegebene Ressource koordinieren können. Weitere Informationen finden Sie unter Mutex Objects.
Semaphor Verwaltet eine Anzahl zwischen Null und einem bestimmten Maximalwert, wobei die Anzahl der Threads beschränkt wird, die gleichzeitig auf eine freigegebene Ressource zugreifen. Weitere Informationen finden Sie unter Semaphor-Objekte.
Wartezeitgeber Benachrichtigt mindestens einen Wartethread, dass eine angegebene Zeit eingetroffen ist. Weitere Informationen finden Sie unter Waitable Timer Objects.

 

Obwohl für andere Verwendungen verfügbar, können die folgenden Objekte auch für die Synchronisierung verwendet werden.

Objekt Beschreibung
Änderungsbenachrichtigung Erstellt von der FindFirstChangeNotification--Funktion wird der Zustand so festgelegt, dass er signalisiert wird, wenn ein angegebener Änderungstyp innerhalb eines angegebenen Verzeichnisses oder einer angegebenen Verzeichnisstruktur auftritt. Weitere Informationen finden Sie unter Abrufen von Verzeichnisänderungsbenachrichtigungen.
Konsoleneingabe Erstellt, wenn eine Konsole erstellt wird. Das Handle für die Konsoleneingabe wird von der CreateFile--Funktion zurückgegeben, wenn CONIN$ angegeben wird, oder von der GetStdHandle--Funktion. Der Zustand wird so festgelegt, dass er signalisiert wird, wenn ungelesene Eingaben im Eingabepuffer der Konsole vorhanden sind und nicht signalisiert werden, wenn der Eingabepuffer leer ist. Weitere Informationen zu Konsolen finden Sie unter Character-Mode Applications
Arbeit Erstellt durch Aufrufen der CreateJobObject--Funktion. Der Status eines Auftragsobjekts wird so festgelegt, dass er signalisiert wird, wenn alle Prozesse beendet werden, da das angegebene End-of-Job-Zeitlimit überschritten wurde. Weitere Informationen zu Auftragsobjekten finden Sie unter Auftragsobjekte.
Speicherressourcenbenachrichtigung Erstellt von der funktion CreateMemoryResourceNotification. Der Zustand wird so festgelegt, dass er signalisiert wird, wenn eine bestimmte Art von Änderung innerhalb des physischen Speichers erfolgt. Weitere Informationen zum Arbeitsspeicher finden Sie unter Speicherverwaltung.
Prozess Erstellt durch Aufrufen der CreateProcess-Funktion. Der Status wird während der Ausführung des Prozesses nicht signalisiert und beim Beenden des Prozesses signalisiert. Weitere Informationen zu Prozessen finden Sie unter Prozesse und Threads.
Faden Wird erstellt, wenn ein neuer Thread durch Aufrufen der CreateProcess, CreateThread-oder CreateRemoteThread- funktion erstellt wird. Der Zustand wird während der Ausführung des Threads nicht signalisiert und beim Beenden des Threads signalisiert. Weitere Informationen zu Threads finden Sie unter Prozesse und Threads.

 

Unter bestimmten Umständen können Sie auch eine Datei, ein benanntes Pipe- oder Kommunikationsgerät als Synchronisierungsobjekt verwenden; deren Verwendung zu diesem Zweck wird jedoch abgeraten. Verwenden Sie stattdessen asynchrone E/A, und warten Sie auf das Ereignisobjekt, das in der ÜBERLAPPENDEN Struktur festgelegt ist. Es ist sicherer, das Ereignisobjekt aufgrund der Verwirrung zu verwenden, die auftreten kann, wenn mehrere gleichzeitig überlappende Vorgänge auf derselben Datei, benannten Pipe oder Kommunikationsgerät ausgeführt werden. In dieser Situation gibt es keine Möglichkeit zu wissen, welcher Vorgang den Zustand des Objekts signalisiert hat.

Weitere Informationen zu E/A-Vorgängen für Dateien, benannte Rohre oder Kommunikationen finden Sie unter Synchronisierung und überlappende Eingabe- und Ausgabe-.