create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueuecreate_message_queue创建消息队列(算子)

名称

create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueuecreate_message_queue — 创建一个新的空消息队列。

签名

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

描述

create_message_queuecreate_message_queueCreateMessageQueueCreateMessageQueueCreateMessageQueuecreate_message_queue 函数创建一个新的空消息队列。输出参数 QueueHandleQueueHandleQueueHandleQueueHandlequeueHandlequeue_handle 是新创建消息队列的句柄,用于在后续调用使用该队列的算子时识别队列。

消息队列采用 FIFO 管道设计,可在不同线程间安全传递任意数据集。 队列访问在内部实现完全同步,应用程序无需显式加锁。数据通过称为消息的载体在队列中传输(参见 create_messagecreate_messageCreateMessageCreateMessageCreateMessagecreate_message)。

多个生产者线程可同时追加数据(enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message),同时多个消费者线程可并行提取数据(dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message)。单次 enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message 操作可批量入队多条消息。此时这些消息将以队列为载体同步传输,并通过单次 dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message 调用完成交付。

所有入队消息均由 enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message 操作进行复制。因此,在调用 enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message 后,原始消息可立即被重复使用,而不会影响队列中的副本。

执行信息

参数

QueueHandleQueueHandleQueueHandleQueueHandlequeueHandlequeue_handle (输出控制)  message_queue HMessageQueue, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

新创建的消息队列句柄。

元素数量: QueueHandle == 1

断言: QueueHandle != 0

示例(HDevelop)

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

结果

除非发生资源分配错误,否则返回 2 (H_MSG_TRUE)。否则将抛出异常。

可能的后继

enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message, dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message

另见

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

模块

基础