Message Queues

Message Queues

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

Inhaltsverzeichnis

Funktionsprinzip

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

  • enqueue zum Hinzufügen eines Objekt und
  • dequeue zum Zurückholen und Entfernen eines Objektes

bereit.

  • während die Warteschlange (per Axiom) unendlich viele Objekte aufnimmt, kann beim Ringpuffer bei Erschöpfung ein Überlauf eintreten, für den eine Bearbeitung vereinbart werden muss, siehe auch unten.

Dabei wird nach dem First In – First Out-Prinzip, kurz FIFO (deutsch zuerst hinein – zuerst hinaus) gearbeitet, das heißt, es wird von dequeue immer das Objekt aus der Warteschlange zurückgegeben, welches von den in der Warteschlange noch vorhandenen Objekten 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.


Bild:Queue_algorithmn.jpg


Mit enter wird ein neuer Wert (3) der Schlange hinzugefügt, und mit leave das am längsten gespeicherte Element (37) herausgenommen. Der einzige lesende Zugriff erfolgt mit front \to und liefert das erste gespeicherte Element der Queue (hier im Beispiel 37, natürlich unter der Annahme dass die Operation leave nicht ausgeführt wurde!).

Anwendung

Die zur Interprozesskommunikation verwendete Pipe ist eine der wichtigsten Anwendungen für Warteschlangen.

Durch Warteschlangen werden auch langsame externe Geräte, z.B. Drucker, von der Programmabarbeitung entkoppelt. Nach dem Einstellen eines Druckauftrages in die Warteschlange wird dem Programm der Auftrag als 'gedruckt' signalisiert, tatsächlich wird der Auftrag jedoch erst später bei Verfügbarkeit des Gerätes ausgeführt.

Warteschlangen werden außerdem 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.

Graphische Benutzeroberflächen puffern Maus- und Tastaturereignisse in einer sog. „Message Queue“ und teilen sie dann, abhängig von Position und Eingabefocus, den korrekten Prozessen zu.

Eine Warteschlange kann auch zum Parallelisieren verwendet werden. Dies kann man sich wie bei einem Postamt vorstellen, bei dem es mehrere Schalter für eine Warteschlange gibt. So können Aufgaben eingestellt werden, die später parallel abgearbeitet werden.

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. Wenn zwischenzeitlich nicht genügend Objekte entnommen wurden, kann dies dazu führen, dass sich der Inhalt des Ringpuffers immer nur über einen begrenzten Zeitraum hinweg auslesen lässt. Eine korrekt implementierte Warteschlange sollte daher in diesem Fall entweder einen Pufferüberlauf signalisieren oder zusätzlichen Speicherplatz bereitstellen, es sei denn, dass der Datenverlust akzeptiert werden kann.

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

Verwandtschaft mit Stapelspeichern (Stacks)

Warteschlangen lassen sich vorstellen als Bücherstapel, die von unten befüllt werden; dementsprechend gibt es Implementierungen, die gar keinen prinzipiellen Unterschied zwischen Stacks und Queues machen. In REXX steht das Leseende einer Queue fest; mit PUSH abgelegte Einträge werden nach dem LIFO-Prinzip gelesen (Last In – First Out), mit QUEUE abgelegte nach dem FIFO-Prinzip. Zur Interprozesskommunikation sind insbesondere Queues interessant.

Siehe auch


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Message broker — is an intermediary program which translates the language of a system from one internationally recognized language to another by way of a telecommunications medium. Contents 1 Pattern 2 Broker Functionality 3 List of Message broker software …   Wikipedia

  • Message-oriented middleware — (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. MOM allows application modules to be distributed over heterogeneous platforms and reduces the complexity of developing… …   Wikipedia

  • Message queue — In computer science, message queues and mailboxes are software engineering components used for interprocess communication, or for inter thread communication within the same process. They use a queue for messaging – the passing of control or of… …   Wikipedia

  • Message Passing Interface — MPI, the Message Passing Interface, is standardized and portable message passing system designed by a group of researchers from academia and industry to function on a wide variety of parallel computers. The standard defines the syntax and… …   Wikipedia

  • Message queuing service — A message queueing service is a message oriented middleware or MOM deployed in a compute cloud using software as a service model. Service subscribers access queues and or topics to exchange data using point to point or publish and subscribe… …   Wikipedia

  • Message Queue — In der Informatik bezeichnet eine Warteschlange (engl. Queue [kju]) eine häufig eingesetzte spezielle Datenstruktur. Inhaltsverzeichnis 1 Funktionsprinzip 2 Illustration 3 Anwendung 4 Imp …   Deutsch Wikipedia

  • Microsoft Message Queuing — or MSMQ is a Message Queue implementation developed by Microsoft and deployed in its Windows Server operating systems since Windows NT 4 and Windows 95. The latest Windows 7 also includes this component. In addition to its mainstream server… …   Wikipedia

  • Java Message Service — The Java Message Service (JMS) API is a Java Message Oriented Middleware (MOM) API for sending messages between two or more clients. JMS is a part of the Java Platform, Enterprise Edition, and is defined by a specification developed under the… …   Wikipedia

  • Java Message Service — (JMS) ist eine Programmierschnittstelle (API) für die Ansteuerung einer Message Oriented Middleware (MOM) zum Senden und Empfangen von Nachrichten aus einem Client heraus, der in der Programmiersprache Java geschrieben ist. JMS hat das Ziel, lose …   Deutsch Wikipedia

  • Java Message Service Provider — Java Message Service (JMS) ist eine durch den Java Community Process genormte Programmierschnittstelle (API) für die Ansteuerung von Message Oriented Middleware aus einem Client heraus, der in der Programmiersprache Java geschrieben ist. Die API… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”