create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueuecreate_message_queue (算子名称)
名称
create_message_queueT_create_message_queueCreateMessageQueueCreateMessageQueuecreate_message_queue — Create a new empty message queue.
参数签名
def create_message_queue() -> HHandle
描述
create_message_queuecreate_message_queueCreateMessageQueueCreateMessageQueueCreateMessageQueuecreate_message_queue creates a new empty message queue.
The output parameter QueueHandleQueueHandleQueueHandleQueueHandlequeueHandlequeue_handle is a handle to the newly created
message queue and is used to identify the queue in any subsequent operator
calls using the queue.
The message queues are designed as FIFO pipes delivering arbitrary sets of
data safely among different threads. The queue access is internally fully
synchronized, no explicit locking is required from the application.
The data is traveling through the queue in so called messages
(see create_messagecreate_messageCreateMessageCreateMessageCreateMessagecreate_message).
Multiple producer threads can append data simultaneously
(enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message) while multiple consumer threads are simultaneously
retrieving the data again (dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message). Multiple messages
can be enqueued together using a single enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message operation.
In such case, those messages will travel together through the queue
and will be delivered through a single dequeue_messagedequeue_messageDequeueMessageDequeueMessageDequeueMessagedequeue_message call.
All the enqueued messages are copied by the
enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message operation. The original message(s) can thus be
immediately reused after the enqueue_messageenqueue_messageEnqueueMessageEnqueueMessageEnqueueMessageenqueue_message call without affecting
the enqueued copy.
运行信息
- 多线程类型:可重入(与非独占操作符并行运行)。
- 多线程作用域:全局(可以从任何线程调用)。
- 未经并行化处理。
参数表
QueueHandleQueueHandleQueueHandleQueueHandlequeueHandlequeue_handle (output_control) message_queue → HMessageQueue, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle of the newly created message queue.
Number of elements:
QueueHandle == 1
Assertion:
QueueHandle != 0
例程 (HDevelop)
create_message_queue (ProducerQueue)
create_message_queue (ResultQueue)
* ...
结果
Returns 2 (
H_MSG_TRUE)
unless a resource allocation error occurs. Otherwise
an exception is raised.
可能的后置算子
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
模块
Foundation