Warteschlange (Datenstruktur)

In der Informatik bezeichnet eine Warteschlange (engl. Queue) eine häufig eingesetzte spezielle Datenstruktur.

Inhaltsverzeichnis

Funktionsprinzip

Eine Warteschlange kann eine beliebige Menge von Objekten aufnehmen und gibt diese in der Reihenfolge ihres Einfügens wieder zurück. Dazu stellen Warteschlangen die Operationen

bereit.

Dabei wird nach dem First In - First Out-Prinzip (deutsch zuerst hinein - zuerst hinaus, kurz FIFO) gearbeitet, das heißt es wird von dequeue immer das Objekt aus der Warteschlange zurückgegeben, welches als erstes mit enqueue hineingelegt wurde.

Illustration

Man kann sich eine Warteschlange wie eine Warteschlange von Kunden an einer Kasse vorstellen. Der Letzte, der sich in die Schlange stellt, wird auch als letzter bedient. Umgekehrt wird derjenige, der sich als erstes angestellt hat, als erster bedient.

Anwendung

Warteschlangen werden häufig zur Datenübergabe zwischen asynchronen Prozessen in Verteilten Systemen verwendet, wenn also Daten vor ihrer Weiterverarbeitung gepuffert werden müssen. Der Zugriff erfolgt dabei durch im Betriebssystem verankerte APIs. Die Größe der Queue wird durch das Betriebssystem limitiert.

Implementierung als Ringpuffer

Warteschlangen sind häufig als Ringpuffer mit je einem Zeiger auf Anfang und Ende implementiert. Die Besonderheit des Ringpuffers ist, dass er eine feste Größe besitzt. Dabei werden, wenn der Puffer voll ist, die ältesten Inhalte wieder überschrieben. Dies führt dazu, dass sich der Inhalt des Ringpuffers immer nur über einen begrenzten Zeitraum hinweg auslesen lässt. Dieser Nachteil wird jedoch bei sehr großen Datenmengen durch die feste Größe wieder aufgewogen.

Auch die Black-Box im Flugzeug ist in der Regel ein Ringpuffer, sodass bei einem Absturz auch nur die letzten Minuten der aufgezeichneten Messwerte vorhanden sind.

Siehe auch

See also: Warteschlange (Datenstruktur), Application Programming Interface, Betriebssystem, Black-Box, Datenstruktur, Deque, First In - First Out, Flugzeug, Informatik, Last In - First Out