Wie funktiniert WaitForSingleObject genau?
-
Hi,kann mir einer erklären was genau WaitForSingleObject funktioniert und wie man es anwendet.
-
Viele Kernelobjekt-Handles (Events, Mutexes, Semaphores, aber auch Threads, Prozesse, Pipe- und Dateihandles) unterscheiden den Zustand "Signaled" und "not Signaled". Wann und wie der Zustand sich ändert, hängt dabei vom kernelobjekt ab.
WaitForSingleObject hält den aktuellen Thread an, bis das angegebene Objekt im "Signaled"-Zustand ist. Dabei wird keine Zeit mit "polling" verbraten. Die drei üblichen Aufgabenbereiche sind
- Thread- und prozeßsynchronisation (solange ich schreibe darfst du nicht lesen)
- Effektives "ruhigstellen" von Threads (z.B. ein Hintergrund sollte keine CPU-Zyklen verbraten während er auf neue Arbeit wartet)
- Vollzugsmeldungen (z.B. asynchrones Lesen aus Datei fertig)Mit Events kann man einem anderen Thread einen "Schubs" geben, z.B. einen Worker-Thread benachrichtigen, das neue Afgaben anstehen. Mutexes erlauben exklusiven Zugriff auf eine resource, Semaphores scheränken die Anzahl der zugreifenden ein.
Prozeß- und Thread-Handles werden "Signaled" gesetzt wenn der entsprechende Prozeß/Thread beendet wird - so kann man warten, bis ein Prozeß/Thread beendet wurde.