KlassenKlassenKlassenKlassen | | | | Operatoren

create_message_queuecreate_message_queueCreateMessageQueuecreate_message_queueCreateMessageQueueCreateMessageQueue (Operator)

Name

create_message_queuecreate_message_queueCreateMessageQueuecreate_message_queueCreateMessageQueueCreateMessageQueue — Erzeugen einer leeren Warteschlange für Nachrichten.

Signatur

create_message_queue( : : : QueueHandle)

Herror create_message_queue(Hlong* QueueHandle)

Herror T_create_message_queue(Htuple* QueueHandle)

Herror create_message_queue(Hlong* QueueHandle)

void HMessageQueue::CreateMessageQueue()

void CreateMessageQueue(HTuple* QueueHandle)

void HMessageQueue::HMessageQueue()

void HMessageQueue::CreateMessageQueue()

void HOperatorSetX.CreateMessageQueue([out] VARIANT* QueueHandle)

void HMessageQueueX.CreateMessageQueue()

static void HOperatorSet.CreateMessageQueue(out HTuple queueHandle)

public HMessageQueue()

void HMessageQueue.CreateMessageQueue()

Beschreibung

create_message_queuecreate_message_queueCreateMessageQueuecreate_message_queueCreateMessageQueueCreateMessageQueue erzeugt eine leere Warteschlange für Nachrichtenobjekte. QueueHandleQueueHandleQueueHandleQueueHandleQueueHandlequeueHandle 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_messagecreate_messageCreateMessagecreate_messageCreateMessageCreateMessage).

Mehrere Erzeugerthreads können Nachrichten gleichzeitig über enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage anhängen, während mehrere Verbraucherthreads über dequeue_messagedequeue_messageDequeueMessagedequeue_messageDequeueMessageDequeueMessage gleichzeitig Nachrichten aus diesem Datenstrom empfangen können. Dabei können mehrere Nachrichten mit einem einzigen Aufruf von enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage eingereiht werden. In diesem Fall wandern die Nachrichten gemeinsam durch die Warteschlange und werden mit einem einzigen Aufruf von dequeue_messagedequeue_messageDequeueMessagedequeue_messageDequeueMessageDequeueMessage empfangen.

enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage kopiert die Nachricht in die Warteschlange, weshalb das ursprüngliche Nachrichtenobjekt danach sofort weiterverwendet werden kann, ohne das kopierte Nachrichtenobjekt zu beeinflussen.

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_queueclear_message_queueClearMessageQueueclear_message_queueClearMessageQueueClearMessageQueue 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_paramset_message_queue_paramSetMessageQueueParamset_message_queue_paramSetMessageQueueParamSetMessageQueueParam durchgeführt werden.

Parallelisierung

Parameter

QueueHandleQueueHandleQueueHandleQueueHandleQueueHandlequeueHandle (output_control)  message_queue HMessageQueue, HTupleHTupleHMessageQueue, HTupleHMessageQueueX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Warteschlangenobjekt.

Parameteranzahl: QueueHandle == 1

Zusicherung: QueueHandle != 0

Beispiel (HDevelop)

create_message_queue (ProducerQueue)
create_message_queue (ResultQueue)
* ...
clear_message_queue ([ProducerQueue,ResultQueue])

Ergebnis

create_message_queuecreate_message_queueCreateMessageQueuecreate_message_queueCreateMessageQueueCreateMessageQueue liefert den Wert 2 (H_MSG_TRUE), sofern kein Allokierungsfehler auftritt.

Nachfolger

enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage, dequeue_messagedequeue_messageDequeueMessagedequeue_messageDequeueMessageDequeueMessage

Siehe auch

clear_message_queueclear_message_queueClearMessageQueueclear_message_queueClearMessageQueueClearMessageQueue, enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage, dequeue_messagedequeue_messageDequeueMessagedequeue_messageDequeueMessageDequeueMessage, set_message_queue_paramset_message_queue_paramSetMessageQueueParamset_message_queue_paramSetMessageQueueParamSetMessageQueueParam, get_message_queue_paramget_message_queue_paramGetMessageQueueParamget_message_queue_paramGetMessageQueueParamGetMessageQueueParam, create_messagecreate_messageCreateMessagecreate_messageCreateMessageCreateMessage, clear_messageclear_messageClearMessageclear_messageClearMessageClearMessage, set_message_tupleset_message_tupleSetMessageTupleset_message_tupleSetMessageTupleSetMessageTuple, get_message_tupleget_message_tupleGetMessageTupleget_message_tupleGetMessageTupleGetMessageTuple, set_message_objset_message_objSetMessageObjset_message_objSetMessageObjSetMessageObj, get_message_objget_message_objGetMessageObjget_message_objGetMessageObjGetMessageObj

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren