KlassenKlassenKlassenKlassen | | | | Operatoren

enqueue_messageT_enqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage (Operator)

Name

enqueue_messageT_enqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage — Einreihen von Nachrichtenobjekten in eine Warteschlange.

Signatur

enqueue_message( : : QueueHandle, MessageHandle, GenParamName, GenParamValue : )

Herror T_enqueue_message(const Htuple QueueHandle, const Htuple MessageHandle, const Htuple GenParamName, const Htuple GenParamValue)

Herror enqueue_message(const HTuple& QueueHandle, const HTuple& MessageHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HMessageQueue::EnqueueMessage(const HTuple& MessageHandle, const HTuple& GenParamName, const HTuple& GenParamValue) const

void EnqueueMessage(const HTuple& QueueHandle, const HTuple& MessageHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HMessageQueue::EnqueueMessage(const HMessageArray& MessageHandle, const HTuple& GenParamName, const HTuple& GenParamValue) const

void HMessageQueue::EnqueueMessage(const HMessage& MessageHandle, const HTuple& GenParamName, const HTuple& GenParamValue) const

void HOperatorSetX.EnqueueMessage(
[in] VARIANT QueueHandle, [in] VARIANT MessageHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

void HMessageQueueX.EnqueueMessage(
[in] IHMessageX* MessageHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

static void HOperatorSet.EnqueueMessage(HTuple queueHandle, HTuple messageHandle, HTuple genParamName, HTuple genParamValue)

void HMessageQueue.EnqueueMessage(HMessage[] messageHandle, HTuple genParamName, HTuple genParamValue)

void HMessageQueue.EnqueueMessage(HMessage messageHandle, HTuple genParamName, HTuple genParamValue)

Beschreibung

enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage reiht eine oder mehrere Nachrichtenobjekte in eine Warteschlange ein, die durch den Parameter QueueHandleQueueHandleQueueHandleQueueHandleQueueHandlequeueHandle referenziert wird. Die eingereihten Nachrichten können wieder durch den Operator dequeue_messagedequeue_messageDequeueMessagedequeue_messageDequeueMessageDequeueMessage der Reihe nach ausgelesen werden.

Die einzureihenden Nachrichtenobjekte (vgl. create_messagecreate_messageCreateMessagecreate_messageCreateMessageCreateMessage) werden im Parameter MessageHandleMessageHandleMessageHandleMessageHandleMessageHandlemessageHandle übergeben welcher sowohl einzelne als auch Tupel von Nachrichtenobjekten akzeptiert. Wenn mehrere Nachrichtenobjekte zusammen der Warteschlange angehängt werden, werden diese auch wieder zusammen durch den Operator dequeue_messagedequeue_messageDequeueMessagedequeue_messageDequeueMessageDequeueMessage ausgegeben.

Es können gleichzeitig sowohl mehrere Erzeuger (enqueuing) Threads zu einer Warteschlange Nachrichten schicken als auch mehrere Verbraucher (dequeuing) Threads aus der gleichen Warteschlange Nachrichten holen. Die Warteschlange ist als FIFO (first-in first-out) Puffer organisiert, wobei jede Nachricht unabhängig vom Thread nur einmal aus der Warteschlange ausgelesen werden kann.

Der Zugriff auf die Warteschlange ist intern synchronisiert, so dass vom Benutzer keine zusätzlichen externen Synchronisationsmaßnahmen notwendig sind. Wenn die Warteschlange leer ist und mindestens ein Verbraucherthread auf eine Nachricht in dequeue_messagedequeue_messageDequeueMessagedequeue_messageDequeueMessageDequeueMessage wartet, erhält einer der wartenden Threads eine Nachricht und wird aufgeweckt, sobald ein Erzeugerthread mit Hilfe von enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage ebendiese Nachricht erfolgreich in die Warteschlange gestellt hat. Andernfalls wird die Nachricht an die Warteschlange asynchron angehängt, um an einen Verbraucherthread weitergereicht zu werden, sobald dieser bereit ist die Nachricht zu entnehmen.

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.

Die Parameter GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue sind für zukünftige Erweiterungen des Operators reserviert. Es werden aktuell keine generischen Parameterwerte unterstützt.

Falls die Warteschlange nach der Operation eine größere Anzahl von Nachrichten halten würde als die spezifizierte Maximalanzahl, wird der Fehler H_ERR_MQOVL zurückgegeben. Die Maximalanzahl von gehaltenen Nachrichten wird über den Parameterwert 'max_message_num'"max_message_num""max_message_num""max_message_num""max_message_num""max_message_num" im Operator set_message_queue_paramset_message_queue_paramSetMessageQueueParamset_message_queue_paramSetMessageQueueParamSetMessageQueueParam festgelegt.

Parallelisierung

Parameter

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

Warteschlangenobjekt.

Parameteranzahl: QueueHandle == 1

Restriktion: QueueHandle != 0

MessageHandleMessageHandleMessageHandleMessageHandleMessageHandlemessageHandle (input_control)  message(-array) HMessage, HTupleHTupleHMessage, HTupleHMessageX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Einzureihende Nachrichtenobjekte.

Parameteranzahl: MessageHandle > 0

Restriktion: MessageHandle != 0

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  string-array HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Namen generischer Parameter.

Parameteranzahl: GenParamName == GenParamValue

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  tuple-array HTupleHTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Werte generischer Parameter.

Parameteranzahl: GenParamName == GenParamValue

Beispiel (HDevelop)

	create_message_queue (Queue)
* ...
create_message (Message)
set_message_tuple (Message, 'mixed_tuple', ['The answer', 42])
enqueue_message (Queue, Message, [], [])
clear_message (Message)

Ergebnis

Im Erfolgsfall gibt enqueue_messageenqueue_messageEnqueueMessageenqueue_messageEnqueueMessageEnqueueMessage den Wert 2 (H_MSG_TRUE) zurück. Andernfalls wird eine Fehlerbehandlung durchgeführt. Mögliche Fehler können ungültige Parameter oder Allokierungsfehler sein.

Vorgänger

set_message_tupleset_message_tupleSetMessageTupleset_message_tupleSetMessageTupleSetMessageTuple, set_message_objset_message_objSetMessageObjset_message_objSetMessageObjSetMessageObj

Siehe auch

create_message_queuecreate_message_queueCreateMessageQueuecreate_message_queueCreateMessageQueueCreateMessageQueue, clear_message_queueclear_message_queueClearMessageQueueclear_message_queueClearMessageQueueClearMessageQueue, 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