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_t | capacity() const |
void | clearOverrun() |
bool | discardSupported() const |
Qul::Platform::MessageQueueStatus | enqueueOrDiscard(const MessageType *message) |
Qul::Platform::MessageQueueStatus | enqueueOrDiscardFromInterrupt(const MessageType *message) |
Qul::Platform::MessageQueueStatus | enqueueOrOverwrite(const MessageType *message) |
Qul::Platform::MessageQueueStatus | enqueueOrOverwriteFromInterrupt(const MessageType *message) |
bool | isEmpty() const |
bool | isEmptyFromInterrupt() const |
bool | isOverrun() const |
bool | overwriteSupported() const |
Qul::Platform::MessageQueueStatus | receive(MessageType *message, int32_t timeout = 0) |
Qul::Platform::MessageQueueStatus | receiveFromInterrupt(MessageType *message, int32_t timeout = 0) |
详细描述
这个模板类通过自动化任务(例如队列创建、删除和消息大小计算)简化了队列的使用。大多数提供的函数都调用了它们的 Qul::Platform::MessageQueueInterface 对应版本。
另请参阅Qul::Platform::MessageQueueInterface 和 Qul::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(), receiveFromInterrupt 和 enqueueOrOverwrite。
[自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必须是指向可以容纳整个
此功能是在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必须是指向可以容纳整个
注意:一般来说,从中断中调用的函数不应该有任何阻塞。根据实现方式,即使是非零值,timeout参数也可能被忽略。
此功能是在Qt Quick Ultralite(平台)1.9中引入的。
参见:MessageQueueInterface::receiveFromInterrupt(),receive(),enqueueOrDiscard(),enqueueOrDiscardFromInterrupt(),enqueueOrOverwrite()和enqueueOrOverwriteFromInterrupt()。
在某些Qt许可证下可用。
了解更多。