In meinem letzten Pfosten besprach ich den Gebrauch WaitForSingleObject in Beziehung zu mutexes und möglichen Weisen, gleichwertige Funktionalität einzuführen, als, solchen Code zu GNU/Linux tragend. In diesem Pfosten beschreibe ich den Gebrauch von dieser API mit Ereignisgegenständen in Microsoft Windows und schlage mögliche Weisen der Aufgabe solchen Codes GNU/Linux oder Unix vor.
Zuerst etwas Hintergrund auf Ereignisgegenständen. Ein Ereignisgegenstand ist gerade eine andere Art Windows-Kernfahrdienstleitergegenstand. Von einer prespective Kodierung, ist ein Ereignisgegenstand ein Synchrounisierungsgegenstand, der eine oder mehrere Kernfahrdienstleitergegenstände einkapselt und deren Synchrounisierungssemantik über WaitForSingleObject und seine Vetter zugänglich sind. Jederzeit nonsignaled ein Synchrounisierungsgegenstand wird entweder oder signalisiert, d.h. kann der Gegenstand in einem von zwei möglichen Zuständen nur sein.
Alle WaitFor Familie von API einschließlich WaitForSingleobject Wartezeit auf einem Gegenstandhandgriff oder Handgriffe bis einige spezifizierte Kriterien wird getroffen. Die zwei grundlegenden Kriterien für alle diese API sind der signalisierte Zustand des Gegenstandes, auf dessen Handgriff er wartet und ein Zeitüberschreitungswert. So ist ein Gewinde, das diese API-Wartezeiten benennt, bis der spezifizierte Gegenstand den signalisierten Zustand oder die spezifizierte Abschaltung einträgt, abgelaufen. Wenig oder keine Zentraleinheitszeit wird verwendet, wenn solch ein Gewinde im Wartezustand ist.
Im Falle der Ereignisse bringt ein CreateEvent oder ein OpenEvent einen Handgriff zu einem Ereignisgegenstand zurück. Wenn ein Ereignis im signalisierten Zustand ist, bedeutet es, dass das das Ereignis die Kapazität hat, eine oder mehrere Gewinde freizugeben, die dieses bestimmte signalisiert zu werden warten Ereignis. Wenn ein Ereignis im nonsignaled Zustand ist, gibt es kein Wartegewinde frei. Zuerst nonsignaled der Zustand eines Ereignisses. Ein Objekt-Status Ereigniswird ausdrücklich auf signalisiert durch SetEvent oder PulseEvent eingestellt. Ereignisgegenstände werden auch in überschnittenen Betrieben wie Ablesen von einer Einfaßung benutzt, in diesem Fall der EreignisObjekt-Status auf signalisiert durch den Kern eher als durch eine Anwendung eingestellt wird.
Ereignisse kommen auch in zwei zurückgestellte Arten. Wenn ein Ereignis ein Manuellzurückstellen Ereignis ist, dann alle WaitForSingleObjects Rückkehr, das dieses Ereignis warten, wenn es so zusammengebaut wird. Mit anderen Worten kann ein Manuellzurückstellen Ereignis Tätigkeit durch eine oder mehrere auslösen WaitForSingleObject oder seine Vetter. Ein Objekt-Status Manuellzurückstellen Ereignis-muss zu nonsignaled von ResetEvent ausdrücklich zurückgestellt werden.
Für einen Auto-resetereignisgegenstand sind WaitForSingleObject und es die Relationen, die dem Zustand zurückgestellt werden

























