create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueue (Operator)

Name

create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueue — Erzeugen einer leeren Warteschlange für Nachrichten.

Signatur

create_message_queue( : : : QueueHandle)

Herror T_create_message_queue(Htuple* QueueHandle)

void CreateMessageQueue(HTuple* QueueHandle)

void HMessageQueue::HMessageQueue()

void HMessageQueue::CreateMessageQueue()

static void HOperatorSet.CreateMessageQueue(out HTuple queueHandle)

public HMessageQueue()

void HMessageQueue.CreateMessageQueue()

Beschreibung

create_message_queuecreate_message_queueCreateMessageQueueCreateMessageQueueCreateMessageQueue erzeugt eine leere Warteschlange für Nachrichtenobjekte. QueueHandleQueueHandleQueueHandleQueueHandlequeueHandle 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_messageCreateMessageCreateMessageCreateMessage).

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

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

Ausführungsinformationen

Parameter

QueueHandleQueueHandleQueueHandleQueueHandlequeueHandle (output_control)  message_queue HMessageQueue, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Warteschlangenobjekt.

Parameteranzahl: QueueHandle == 1

Zusicherung: QueueHandle != 0

Beispiel (HDevelop)

create_message_queue (ProducerQueue)
create_message_queue (ResultQueue)
* ...

Ergebnis

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

Nachfolger

enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessage, dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessage

Siehe auch

clear_message_queueclear_message_queueClearMessageQueueClearMessageQueueClearMessageQueue, enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessage, dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessage, set_message_queue_paramset_message_queue_paramSetMessageQueueParamSetMessageQueueParamSetMessageQueueParam, get_message_queue_paramget_message_queue_paramGetMessageQueueParamGetMessageQueueParamGetMessageQueueParam, create_messagecreate_messageCreateMessageCreateMessageCreateMessage, clear_messageclear_messageClearMessageClearMessageClearMessage, set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTuple, get_message_tupleget_message_tupleGetMessageTupleGetMessageTupleGetMessageTuple, set_message_objset_message_objSetMessageObjSetMessageObjSetMessageObj, get_message_objget_message_objGetMessageObjGetMessageObjGetMessageObj

Modul

Foundation