Funktion von aktivem Warten im Entwickler-Bereich?
Beschäftigt man sich mit Computer-Entwicklung, hört man öfters den Begriff "Aktives Warten". Dabei geht es, soweit ich das verstanden habe, darum ein Programm solange zu vertrösten, bis die erfordernden Eingaben vom Benutzer auch wirklich getätigt wurden.
Doch wie synchronisiert oder implementiert man dieses aktive Warten nun genau? Gibt es hier Links, die einzelne Tastaturbefehle anzeigen können? In welchen Sparten der Entwicklung braucht man das aktive Warten? In welchen Programmen benötigt man aktives Warten?
Das aktive Warten muss nicht unbedingt auf bestimmte Eingaben vom Benutzer warten. Normalerweise wird solange gewartet bis eine bestimmte Bedingung erfüllt wird. Z.B. kann ein ClientProgramm darauf warten bis
eine Internetverbindung aufgebaut ist, da er auf Daten vom Server angewiesen ist. Implementieren kann man sowas mit einer relativ einfach mit einer While-Schleife, die als Bedingung eine globale Variable hat, die sich dann irgendwann ändert. Z.B. kann ein Prozess bestimmte Daten für sich reservieren und blocken, um sie zu ändern.
Ein Programm, das ebenfalls auf diese Daten zugreifen will kann dann warten bis die Daten wieder freigegeben wurden. In der While Schleife würde das Programm nur den Status der Daten (locked = true) immer wieder abfragen und sonst nichts tun. Sobald die Daten freigegeben wurden, ändert sich der Status der Daten und die Bedingung würde nicht mehr zutreffen, so dass die While Schleife nicht mehr ausgeführt wird. Überall, wo mehrere Prozesse oder Programme auf gemeinsame Daten zugreifen, kann aktives Warten verwendet werden.
Aktives Warten sollte man nie benutzen, und muss man bei einem guten Design auch nicht. Beim aktiven Warten fragt das Programm "aktiv" in einer ewigen While-Schleife den Zustand des Objekts ab, auf welches gewartet wird, bis sich dieser Zustand ändert. Dieses Vorgehen ist ungemein Ressourcenzehrend. Besser wird dies durch "Locking" implementiert. Beim Locking wird der aktuelle Thread so lange blockiert(schlafen gelegt), bis das gewünschte Ereignis eintritt. Erst dann erhält der Thread wieder Rechenleistung und darf weiterarbeiten. Deshalb solltest du nie aktives Warten selbst implementieren!
Wenn du auf Benutzereingaben eines Konsolenprogramms wartest, dann ist der Einlesebefehl (in C++ std::cin) vom Betriebssystem so implementiert, dass dein Programm so lange geblockt wird, bis der Benutzer etwas eingegeben hat. Wenn es sich um Benutzereingaben aus einer GUI handelt, dann gibt es meist einen Worker-Thread, der Hintergrund Berechnungen erledigt und einen GUI-Thread, der so lange geblockt wird, bis die nächste Benutzerinteraktion stattfindet.
Auch wenn es im Source-Code oft so aussieht, als wäre das Abfragen von GUI-Messages, oder das Warten auch Benutzereingaben, oder das Warten auf Netzwerkpakete als aktives Warten implementiert, so ist es auf Betriebssystemebene durch Locking implementiert. Wenn du dennoch aktives Warten implementieren willst, dann kann ich dir das Codebeispiel auf folgender Seite empfehlen.
Link dieser Seite https://www.talkteria.de/forum/topic-192754.html
Ähnliche Themen
Weitere interessante Themen
- Palmen Pflanzen - brauche Tipp / Empfehlung 1135mal aufgerufen · 1 Antworten · Autor: Triops · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Palmen Pflanzen - brauche Tipp / Empfehlung
- Gartenbambus im Treppenhaus überwintern? 1184mal aufgerufen · 1 Antworten · Autor: ZappHamZ · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Gartenbambus im Treppenhaus überwintern?
- Intimrasur - Bekomme immer Pickel! 1585mal aufgerufen · 1 Antworten · Autor: Wifey · Letzter Beitrag von Verbena
Forum: Fingernägel, Haut & Haare
- Intimrasur - Bekomme immer Pickel!
- Anleitung für Star Frisur 1241mal aufgerufen · 1 Antworten · Autor: Osterhasi · Letzter Beitrag von Verbena
Forum: Fingernägel, Haut & Haare
- Anleitung für Star Frisur
- Ist Sprühwachs für die Haare schädlich? 2423mal aufgerufen · 1 Antworten · Autor: winny2311 · Letzter Beitrag von Verbena
Forum: Fingernägel, Haut & Haare
- Ist Sprühwachs für die Haare schädlich?