C

消息队列类

template <typename MessageType, std::size_t queueCapacity> class Qul::Platform::MessageQueue

一个用于与队列实现接口的便利类。更多...

头文件 #include <platform/messagequeue.h>
自从Qt Quick Ultralite (Platform) 1.9

公共函数

MessageQueue()
~MessageQueue()
uint32_tcapacity() const
voidclearOverrun()
booldiscardSupported() const
Qul::Platform::MessageQueueStatusenqueueOrDiscard(const MessageType *message)
Qul::Platform::MessageQueueStatusenqueueOrDiscardFromInterrupt(const MessageType *message)
Qul::Platform::MessageQueueStatusenqueueOrOverwrite(const MessageType *message)
Qul::Platform::MessageQueueStatusenqueueOrOverwriteFromInterrupt(const MessageType *message)
boolisEmpty() const
boolisEmptyFromInterrupt() const
boolisOverrun() const
booloverwriteSupported() const
Qul::Platform::MessageQueueStatusreceive(MessageType *message, int32_t timeout = 0)
Qul::Platform::MessageQueueStatusreceiveFromInterrupt(MessageType *message, int32_t timeout = 0)

详细描述

这个模板类通过自动化任务(例如队列创建、删除和消息大小计算)简化了队列的使用。大多数提供的函数都调用了它们的 Qul::Platform::MessageQueueInterface 对应版本。

另请参阅Qul::Platform::MessageQueueInterfaceQul::EventQueue

成员函数文档

[since Qt Quick Ultralite (Platform) 1.9] MessageQueue::MessageQueue()

构造 MessageQueue 并为指定的容量请求 Qul::Platform::MessageQueueInterface 实现。它使用 MessageType 的大小作为消息大小。

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

另请参阅 ~MessageQueue() 和 Qul::Platform::requestQueue

[自Qt Quick Ultralite(平台)1.9起] MessageQueue::~MessageQueue()

销毁MessageQueue实例。

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

另请参阅 MessageQueue

[自Qt Quick Ultralite(平台)1.9起] uint32_t MessageQueue::capacity() const

返回队列可以存放的最大项目数。

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

另请参阅 MessageQueueInterface::capacity

[自Qt Quick Ultralite(平台)1.9起] void MessageQueue::clearOverrun()

清除实现的重入标志。

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

另请参阅 MessageQueueInterface::clearOverrun() 和 isOverrun

[自Qt Quick Ultralite(平台)1.9起] bool MessageQueue::discardSupported() const

如果实现支持丢弃,则返回true

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

另请参阅 MessageQueueInterface::discardSupported(), overwriteSupported(), enqueueOrDiscard() 和 enqueueOrDiscardFromInterrupt

[自Qt Quick Ultralite(平台)1.9起] Qul::Platform::MessageQueueStatus MessageQueue::enqueueOrDiscard(const MessageType *message)

message添加到队列或在其满时丢弃它。返回指示函数调用结果的MessageQueueStatus

注意: message只能包含原生的类型。因为Qt Quick Ultralite的默认实现不处理非原生类型。如果您想使用非原生类型,请提供您自己的MessageQueueInterface实现。有关更多信息,请参阅实现自定义队列

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

另请参阅 MessageQueueInterface::enqueueOrDiscard(), enqueueOrDiscardFromInterrupt(), discardSupported(), receive(), receiveFromInterruptenqueueOrOverwrite

[自Qt Quick Ultralite(平台)1.9起] Qul::Platform::MessageQueueStatus MessageQueue::enqueueOrDiscardFromInterrupt(const MessageType *message)

enqueueOrDiscard的安全中断版本。

注意: message只能包含原生的类型。因为Qt Quick Ultralite的默认实现不处理非原生类型。如果您想使用非原生类型,请提供您自己的MessageQueueInterface实现。有关更多信息,请参阅实现自定义队列

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

也请参阅 MessageQueueInterface::enqueueOrDiscardFromInterrupt(),enqueueOrDiscard(),discardSupported(),receive(),receiveFromInterrupt(),以及enqueueOrOverwriteFromInterrupt

[自 Qt Quick Ultralite (平台) 1.9 开始] Qul::Platform::MessageQueueStatus MessageQueue::enqueueOrOverwrite(const MessageType *message)

消息添加到队列或覆盖队列中最老的项(如果队列已满)。返回MessageQueueStatus,指示函数调用的结果。

注意: message只能包含原生的类型。因为Qt Quick Ultralite的默认实现不处理非原生类型。如果您想使用非原生类型,请提供您自己的MessageQueueInterface实现。有关更多信息,请参阅实现自定义队列

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

也请参阅 MessageQueueInterface::enqueueOrOverwrite(),enqueueOrOverwriteFromInterrupt(),overwriteSupported(),receive(),receiveFromInterrupt(),以及enqueueOrDiscard

[自 Qt Quick Ultralite (平台) 1.9 开始] Qul::Platform::MessageQueueStatus MessageQueue::enqueueOrOverwriteFromInterrupt(const MessageType *message)

enqueueOrOverwrite()的中断安全版本。

注意: message只能包含原生的类型。因为Qt Quick Ultralite的默认实现不处理非原生类型。如果您想使用非原生类型,请提供您自己的MessageQueueInterface实现。有关更多信息,请参阅实现自定义队列

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

也请参阅 MessageQueueInterface::enqueueOrOverwriteFromInterrupt(),enqueueOrOverwrite(),overwriteSupported(),receive(),receiveFromInterrupt(),以及enqueueOrDiscardFromInterrupt

[自 Qt Quick Ultralite (平台) 1.9 开始] bool MessageQueue::isEmpty() const

如果队列为空,则返回true,否则返回false

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

也请参阅 MessageQueueInterface::isEmpty() 和 isEmptyFromInterrupt

[自 Qt Quick Ultralite (平台) 1.9 开始] bool MessageQueue::isEmptyFromInterrupt() const

如果队列为空,则返回true,否则返回false。它与isEmpty()类似,但具有中断安全性。

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

也请参阅 MessageQueueInterface::isEmptyFromInterrupt() 和 isEmpty

[自 Qt Quick Ultralite (平台) 1.9 开始] bool MessageQueue::isOverrun() const

如果实现队列由于丢弃或覆盖了项目而溢出,则返回true

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

也请参阅 MessageQueueInterface::isOverrun() 和 clearOverrun

[自 Qt Quick Ultralite (平台) 1.9 开始] bool MessageQueue::overwriteSupported() const

如果实现支持覆盖,则返回true

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

参见:MessageQueueInterface::overwriteSupported(),discardSupported(),enqueueOrOverwrite()和enqueueOrOverwriteFromInterrupt()。

[自 Qt Quick Ultralite (平台) 1.9 开始] Qul::Platform::MessageQueueStatus MessageQueue::receive(MessageType *message, int32_t timeout = 0)

返回队列中的第一条消息。如果指定了timeout,则函数阻塞timeout毫秒。零超时值表示函数不阻塞,负值表示函数无限期等待。

message必须是指向可以容纳整个MessageType的位置的指针。队列中的消息将通过memcpy(或等效函数)写入message指向的位置。

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

参见:MessageQueueInterface::receive(),receiveFromInterrupt(),enqueueOrDiscard(),enqueueOrDiscardFromInterrupt(),enqueueOrOverwrite()和enqueueOrOverwriteFromInterrupt()。

[自 Qt Quick Ultralite (平台) 1.9 开始] Qul::Platform::MessageQueueStatus MessageQueue::receiveFromInterrupt(MessageType *message, int32_t timeout = 0)

receive()的中断安全版本。

message必须是指向可以容纳整个MessageType的位置的指针。队列中的消息将通过memcpy(或等效函数)写入message指向的位置。

注意:一般来说,从中断中调用的函数不应该有任何阻塞。根据实现方式,即使是非零值,timeout参数也可能被忽略。

此功能是在Qt Quick Ultralite(平台)1.9中引入的。

参见:MessageQueueInterface::receiveFromInterrupt(),receive(),enqueueOrDiscard(),enqueueOrDiscardFromInterrupt(),enqueueOrOverwrite()和enqueueOrOverwriteFromInterrupt()。

在某些Qt许可证下可用。
了解更多。