| Operatoren |
create_message_queue — Erzeugen einer leeren Warteschlange für Nachrichten.
create_message_queue( : : : QueueHandle)
create_message_queue erzeugt eine leere Warteschlange für Nachrichtenobjekte. QueueHandle referenziert das erzeugte Warteschlangenobjekt und wird dazu verwendet, um die Warteschlange in den nachfolgenden Operatoraufrufen identifizieren zu können.
Warteschlangen sind FIFO-Puffer, mit welchen sich beliebige Datensätze zwischen unterschiedlichen Threads austauschen lassen. der Zugriff auf eine Warteschlange ist intern synchronisiert, so dass vom Benutzer keine zusätzlichen Synchronisationsmaßnahmen notwendig sind. Die Datensätze wandern durch die Warteschlange in sogenannten Nachrichten (vergl. create_message).
Mehrere Erzeugerthreads können Nachrichten gleichzeitig über enqueue_message anhängen, während mehrere Verbraucherthreads über dequeue_message gleichzeitig Nachrichten aus diesem Datenstrom empfangen können. Dabei können mehrere Nachrichten mit einem einzigen Aufruf von enqueue_message eingereiht werden. In diesem Fall wandern die Nachrichten gemeinsam durch die Warteschlange und werden mit einem einzigen Aufruf von dequeue_message empfangen.
Die Nachrichtenobjekte, welche in die Warteschlange eingehängt werden, werden zusammen mit den in den Objekten enthaltenen Datensätzen von dem Operator enqueue_message kopiert. Die ursprünglichen Nachrichtenobjekte können daher anschließend ohne Seiteneffekte auf die gesendeten Nachrichten wiederverwendet werden.
Wenn die Warteschlange nicht mehr gebraucht wird, können alle enthaltenen Ressourcen, einschließlich der eingereihten Nachrichtenobjekte und der in ihnen enthaltenen Datensätze mit Hilfe des Operators clear_message_queue freigegeben werden. Abhängig vom Benutzerkontext kann es notwendig sein, vor der Freigabe der Ressourcen alle Threads, die in der Warteschlange noch auf Nachrichten warten aufzuwecken und die Warteschlange zu leeren. Diese Aktionen können mit Hilfe des Operators set_message_queue_param durchgeführt werden.
Warteschlangenobjekt.
Parameteranzahl: QueueHandle == 1
Zusicherung: QueueHandle != 0
create_message_queue (ProducerQueue) create_message_queue (ResultQueue) * ... clear_message_queue ([ProducerQueue,ResultQueue])
create_message_queue liefert den Wert 2 (H_MSG_TRUE), sofern kein Allokierungsfehler auftritt.
enqueue_message, dequeue_message
clear_message_queue, enqueue_message, dequeue_message, set_message_queue_param, get_message_queue_param, create_message, clear_message, set_message_tuple, get_message_tuple, set_message_obj, get_message_obj
Foundation
| Operatoren |