create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueuecreate_message_queue (Operator)

Name

create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueuecreate_message_queue — 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()

def create_message_queue() -> HHandle

Beschreibung

create_message_queuecreate_message_queueCreateMessageQueueCreateMessageQueueCreateMessageQueuecreate_message_queue erzeugt eine leere Warteschlange für Nachrichtenobjekte. QueueHandleQueueHandleQueueHandleQueueHandlequeueHandlequeue_handle 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 (vergleiche create_messagecreate_messageCreateMessageCreateMessageCreateMessagecreate_message).

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

enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message 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

QueueHandleQueueHandleQueueHandleQueueHandlequeueHandlequeue_handle (output_control)  message_queue HMessageQueue, HTupleHHandleHTupleHtuple (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_queueCreateMessageQueueCreateMessageQueueCreateMessageQueuecreate_message_queue liefert den Wert TRUE, sofern kein Allokierungsfehler auftritt.

Nachfolger

enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message, dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message

Siehe auch

clear_message_queueclear_message_queueClearMessageQueueClearMessageQueueClearMessageQueueclear_message_queue, enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message, dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message, set_message_queue_paramset_message_queue_paramSetMessageQueueParamSetMessageQueueParamSetMessageQueueParamset_message_queue_param, get_message_queue_paramget_message_queue_paramGetMessageQueueParamGetMessageQueueParamGetMessageQueueParamget_message_queue_param, create_messagecreate_messageCreateMessageCreateMessageCreateMessagecreate_message, clear_messageclear_messageClearMessageClearMessageClearMessageclear_message, set_message_tupleset_message_tupleSetMessageTupleSetMessageTupleSetMessageTupleset_message_tuple, get_message_tupleget_message_tupleGetMessageTupleGetMessageTupleGetMessageTupleget_message_tuple, set_message_objset_message_objSetMessageObjSetMessageObjSetMessageObjset_message_obj, get_message_objget_message_objGetMessageObjGetMessageObjGetMessageObjget_message_obj

Modul

Foundation