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
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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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