QF框架核心组件解析
1. QF框架事件队列机制
QF框架将无法发布事件视为错误,这是事件传递保证策略的一部分。应用程序设计者有责任为当前任务合理设置事件队列的大小。
在事件插入方面,采用FIFO(先进先出)排队策略,事件被插入到头部索引位置。插入过程中会检查头部索引是否需要回绕,如果需要,头部索引会移动到缓冲区末尾,使缓冲区成为循环缓冲区。并且头部索引始终递减,这样做比递增索引能带来更高效的实现,因为在这种情况下,回绕发生在零而不是末尾,将变量与常量零进行比较比其他比较更高效。同时, nFree 计数器会递减,以记录缓冲区中使用了一个事件。最后,函数会更新队列的低水位标记 nMin ,虽然这一步对于队列的正确操作不是必需的,但低水位标记为事件队列的合理大小提供了有价值的经验数据。
此外,QF框架还提供了 QActive_postLIFO() 队列操作,其代码与 QActive_postFIFO() 非常相似,只是事件插入到尾部索引位置。
2. “原始”线程安全队列
QEQueue 结构可直接用作原生QF“原始”线程安全队列。其基本操作包括 QEQueue_postFIFO() 、 QEQueue_postLIFO() 和 QEQueue_get() ,这些函数都不会阻塞。这种队列可用于延迟事件处理,也可用于从活动对象向ISR(中断服务程序)传递事件。
以下是使用“原始”线程安全队
超级会员免费看
订阅专栏 解锁全文
42

被折叠的 条评论
为什么被折叠?



