- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
symbian活动对象.
活动对象
活动对象被用于事件驱动的多任务处理
它们是 Symbian OS的一个基本部分
本讲要讲解为什么活动对象非常重要
解释它们是如何怎样设计以进行响应式、高效率的处理事件
Symbian OS中的事件驱动多任务处理
理解同步请求和异步请求的区别之处,并且能够对它们的典型进行区分
认识活动对象的典型应用——处理异步任务并且不阻塞线程时被请求
理解用多线程和多活动对象实现多任务的区别,以及为什么后者在Symbian OS 编码中要优先使用
Symbian OS 中的事件驱动多任务处理
同步和异步请求
--当程序的函数代码中要调用一个服务请求时,这个服务不是同步执行就是异步执行
同步函数
--执行一个服务直到完成,然后返回其调用者,通常返回的是一个成功或者失败指示
异步函数
--提交一个请求作为函数调用的一部分,并且马上返回到其调用者继续执行
--在一段时间之后请求再完成
调用一个异步请求以后
--调用者可以自由处理其他问题或者简单的等待,后者就是常说的“阻塞”
--一旦服务完成,调用者可以接收到一个信号,显示请求是否成功
这个信号就是一个事件
--这段代码被称为事件驱动
定时器等待是一个典型的异步调用的例子
--另一个例子是Read()方法,它在Symbian OS的RSocket类中,这个方法是从远程主机收取数据
Symbian OS 中的线程
线程被内核以抢占的方式调度
内核执行已经就绪的最高优先级的线程
每个线程都可能由于等待一个事件的发生而暂停执行,而在适当的条件下恢复执行
内核控制线程的调度
允许线程通过时间片分割的方式共享系统资源,如果有更高级的线程处于就绪态,则抢先执行这个高优先级的线程
这种总是运行已就绪的最高优先级线程的方式是占先式多任务处理的基础
当当前线程挂起时会发生上下文切换
上下文切换导致了运行时内核调度器的负载
如果原来的和替换的线程在不同的进程执行,会因为要交换进程内存以及写入缓存而带来更大开销
比线程上下文切换要慢100倍
事件驱动多任务处理
异步事件可发生在如下情况:
从外部资源——例如用户输入或者硬件外设接收到数据。
通过软件——例如由定时器或者完成异步请求时引起。
事件由事件处理器管理
事件处理器等待事件,然后处理它
一个高层的事件处理器的应用是网页浏览器应用
等待用户输入和响应,提交请求以接收Web页,并把接收到的页面显示出来
网页浏览器使用系统服务器,用以接收来自他客户端的请求。系统服务器接收到请求,并且继续等待另一个请求。在服务请求中,系统服务器依次将请求地交给其他的服务器,它们将稍后产生完成事件。
这里描述的每个软件组建都是事件驱动的。它需要对用户输入或者来自系统的请求作出响应
这样的话很快就会变得很复杂!
Symbian OS 中事件处理考虑
在响应一个事件的时候,事件处理器可能要请求另一个服务,而这将引发另一个事件(依次类推)
操作系统必须有一个高效的事件处理模型,从而在事件发生后通过最合适的顺序尽快处理他们
对用户驱动的事件进行快速处理及给出响应以提供良好的用户体验是尤为重要的
要避免在事件之间持续的检测
---这样不断的检测会导致大量的功耗,这在电池供能的设备上必须避免
操作系统在低能耗状态进行等待
---在等待下一个事件的时候,软件应允许操作系统转入空闲模式
事件处理应使内存资源使用最小化
---处理器资源也要有效的使用
活动对象满足这些要求,并提供了一种轻量级的事件驱动多任务处理机制
活动对象和活动调度器
活动对象和活动调度器(Active Scheduler)
一起被称为“活动对象框架”
用于简化异步程序设计,使编写代码更容易:
提交异步请求
管理请求的完成事件
对结果的处理
通常,一个Symbian OS应用程序或服务包含单个主事件处理线程和与其相关的活动调度器
在线程中运行一组活动对象
活动对象有的事件处理方法以供活动调度器调用
每个活动对象封装了一个任务
它向其服务器提供者请求异步服务,并由活动调度器调用它处理请求完成事件
活动对象框架被用于调度
同一个线程中多个异步任务的处理
所有活动对象都在同一个线程中运行,因此在活动对象中切换比线程间上下文切换的代价要低
这就使得活动对象通常是Symbian OS 中最合适的事件驱动多任务处理机制
活动对象在运行中是彼此独立的
就像在进程中线程的运行时彼此独立的一样
然而,由于在在同一线程中,活动对象更容易共享内存
活动对象框架
是协作式或者非抢先的多任务处理
在线程中其他活动对象能够开始执行操作之前,每个活动对象的方法都会运行直到完成
当活动对象在处理事件时
它不能被线程中其他运行的活动对象所抢占
注意线程本身的调度是抢先式的(见前面的幻灯片)
一个Win32 应用(例如
您可能关注的文档
最近下载
- tb 10106-2023《铁路工程地基处理技术规程》(OCR).pdf
- 教资国考复习初中历史必备知识点.pdf
- 3万吨亚磷酸、2万吨三乙胺项目可行性研究报告写作模板-备案审批.doc
- 《大气污染控制工程》课程教学大纲.pdf VIP
- 拜城县老虎台铁矿开采设计方案.doc
- A2数字教育资源获取与评价作业1-主题说明. 高中语文《沁园春.长沙》. 教师自主选择一个教学主题,描述其主要内容、教学对象、教学环境等。.docx
- 农村防灾减灾知识.pptx
- 浙江省生物多样性调查技术导则.pdf VIP
- 2023-2024学年度冀教版五年级上册小学数学期末考试卷 .pdf VIP
- 大气污染控制工程课件.pptx VIP
文档评论(0)