- 25
- 0
- 约1.05千字
- 约 6页
- 2017-02-08 发布于重庆
- 举报
QP运行架构图(QF)
QP运行架构图(QF)
QF是一个事件驱动框架。应用程序可以创建事件实例,放到事件池中,并分发事件到相应注册了这个事件的活动对象状态机任务AO中应用程序可以注册特定的事件,当有事件发生时,QF就会分发事件到AO中有两种事件分发方式,并支持两种对任务的调度方式应用程序是由多个AO组成,每个AO可以认为是一个任务。把硬件中断程序也当做AO看待,只是优先级比较高。可以把QF理解为软件总线software bus,SBus)。在这个软件总线上连接着很多的AO和硬件中断服务程序ISR最多可以支持63个AO+ISR,QF负责事件的存贮、分发,也就是事件驱动。
1QF中事件的分发
如图1所示,QF是个软件总线,在这个软件总线上连接着AO和ISR。QF中包含5个主要的数据结构QF有两种事件的分发方式。
1)直接分发事件:
一个AO直接分发事件到另一个AO,就是直接投递事件。这种方式分发事件的AO要知道目标AO。使用void?QActive_postFIFO(QActive *me, QEvent const *e)?函数分发事件。
2)P/S分发事件:
利用QF中的AO订阅事件表,以P/SPublish-Subscribe出版-订阅方式分发事件,也就是P/S投递事件。 这种方式分发事件AO不用知道目标AO,QF查找AO订阅事件表就知道把事件分发到什么地方。P/S投递方式减少了AO之间的耦合度。使用 void?QF_publish(QEvent const *e)函数分发事件。
图1QF软件总线和两种投递事件方式QF中的数据结构表
框架QF包括活动对象AO,每个AO包含一个AO队列QEQueue)和状态机。QF中还有5个主要的数据结构表,其中有3个AO相关的数据结构:AO订阅事件表,AO队列状态表,AO注册表;有1个事件池QMPool,用于保存事件实例,其它事件都是对这个事件实例的引用;有1个时间事件链表QtimeEvt,用于定时事件处理。图是相应数据表与QF和AO的关系。
图QF框架及五个数据表
QF运行QF运行时,包括的过程有(1)QF初始化;(2)AO和ISR产生事件;(3)分发事件到AO队列;(4)循环调度分派事件到状态机。
在把事件放到AO队列中时,会置1 AO队列状态表相应位;从AO队列中取出事件时,会置0 AO队列状态表相应位。总之,放事件到AO队列或从AO队列取事件,都会修改AO队列状态表。
图QF运行过程及数据表关系
您可能关注的文档
- MiniUI汇总.doc
- MODBUS通讯协议-RTU.doc
- Linux程序设计实验报告.docx
- MDN数据库同步配置指导手册.doc
- mongoDB.doc
- MySQL数据库安全配置.doc
- MySql数据类型.doc
- MS二级考试必备笔记(栈,二叉树等).docx
- NC多账套同步服务解决方案.doc
- net设计报告.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)