`
sen
  • 浏览: 7269 次
  • 来自: ...
社区版块
存档分类
最新评论

深入活动对象2

阅读更多

        Symbian也是多任务操作系统,当然也要用进程、线程完成多任务处理。进程是程序的运行实例,有自己独立的数据空间。线程是进程的执行单元,一个进程 至少有一个主线程。多线程可以并发运行采用抢占式完成多任务处理。但是Symbian下不提倡使用多线程,因为Symbian系统是通过客户端/服务器结 构来提供对线程资源的访问,这就意味着访问线程需要与内核的服务器程序不断地进行通信,效率低。      
        在单线程内,配合使用活动对象+异步函数,完全可以模拟多线程并行运行。不同的是,这是一种非抢占式并行运行,即当前活动对象结束之前,其它活动对象不能 运行。       异步函数在执行后立即返回,继续执行它下面的代码。异步操作有后台继续执行,结束后通过信号量表示异步操作结束。同步函数必须函数内所有操作全部执行结束 后才能返回,执行下面的代码,否则就阻塞在那里。很显然,实现多任务并行运行必须使用异步函数。      
        活动对象是CActive的派生类,设立它的作用就是为了提供一个专门用来调用异步函数的类。因为这个类中专门设有回调函数,使异步函数结束后,能利用这 个回调函数进行尾处理。这个函数就是RunL()。在活动对象外面使用异步函数,只能截获信号量,不能直接进入某个回调函数。
       异步函数结束后,是如何进入到正确的回调函数中的呢?系统运行着一个活动调度器(CActiveSchedule),它能截获异步函数结束后发出的信号 量,并根据这个信号量,调用相应的RunL()。问题是如果CActiveSchedule截获了这个信号,但却找不到该调哪个活动对象的RunL()怎 么办?这时CActiveSchedule会抛出异常,这种状态叫信号游离,这种状况经常发生,所以使用活动对象应该避免这种情况发生。

分享到:
评论

相关推荐

    Socket 结合活动对象 详细 深入讲解

    ### Symbian Socket 结合活动对象 异步函数 详细深入讲解 在移动开发领域,尤其是在早期智能手机操作系统Symbian中,实现网络通信是至关重要的技术之一。本文将详细介绍如何在Symbian平台上利用Socket结合活动对象...

    基于ACE的活动对象实例

    在"基于ACE的活动对象实例"中,我们可以深入理解如何利用ACE库来实现活动对象。首先,ACE库提供了一组类和模板,如`ACE_Task`、`ACE_Svc_Handler`等,它们可以帮助我们创建并发执行的实体。`ACE_Active_Object`是...

    symbian活动对象例子

    2. **状态管理**:活动对象有三个状态:静止(CS passive)、活动(CA active)和等待(CWait)。在静止状态下,对象不会接收任何请求;在活动状态下,对象正在处理请求;在等待状态下,对象正在等待外部事件,如...

    symbian活动对象详解

    2. **状态管理**:每个活动对象都有自己的状态,如等待、活动、暂停等。正确管理这些状态是保证程序正确运行的关键。 3. **错误处理**:活动对象需要能处理各种异常情况,例如网络中断、资源不足等。通常,这需要在...

    symbian 活动对象 例子

    下面我们将深入探讨Symbian活动对象的原理、设计模式以及如何通过`TestAOConsole`这个例子来理解它的用法。 1. **活动对象的原理**: - **线程上下文切换**:Symbian OS中,线程是CPU资源分配的基本单位。但是频繁...

    深入浅出面向对象分析与设计中文版

    8. **分析与设计工具**:如CRC卡片(Class Responsibility Collaborator)、用例图、活动图等,都是帮助进行面向对象分析和设计的有效工具。 9. **重构**:在设计过程中,通过不断的重构优化代码结构,使其更清晰、...

    活动对象2 张锦锋Symbian讲座

    【标签】同样强调了"活动对象2 张锦锋Symbian讲座",表明这是一个系列讲座的第二部分,可能前一部分已经介绍了Symbian的基础知识,而这一部分可能会更深入,比如涵盖高级开发技巧、系统架构解析或者是实际项目案例...

    一个使用活动对象接受和处理键盘事件的例子

    本文将深入探讨如何使用活动对象来接受和处理键盘事件,这对于理解和开发Symbian平台上的应用程序至关重要。 首先,理解活动对象的概念是基础。在Symbian系统中,活动对象是一个能够在其自己的执行线程上运行的对象...

    Apache common pool2 对象池

    这个类包含了一些关键属性,如最大活动对象数(maxTotal)、最大单个类别对象数(maxIdle)和最小空闲对象数(minIdle)。这些参数可以调整以优化性能和资源利用率。 - **最大活动对象数**:设置池中可同时活动的...

    深入了解活动目录操作主机角色 深入了解活动目录操作主机角色

    2. **配置主机(Domain Naming Master)**:处理域的命名空间操作,如添加、删除或更改域树和森林的信任关系。确保森林内的域名保持唯一性。 3. **RID主机(Relative Identifier Master)**:为域中的对象分配全局...

    dateandtime,s60活动对象测试例子

    2. **活动对象(Active Object)**:理解活动对象的概念,如何创建、启动、停止和管理它们,以及如何处理活动对象的回调函数。 3. **TTime类**:掌握TTime类的基本用法,如获取当前时间、格式化时间字符串等。 4. **...

    深入理解JavaScript系列(12) 变量对象(Variable Object)

    2. 函数上下文中的变量对象:当一个函数被调用时,一个活动对象(Activation Object, AO)会被创建,它作为变量对象来使用。活动对象除了存储变量和函数声明外,还包含了函数的参数(formal parameters)和arguments...

    symbian 线程和活动对象一个极好的实例

    在Symbian操作系统中,线程(Thread)和活动对象(Active Object)是两种关键的并发执行机制,它们用于管理应用程序中的多任务处理。在这个极好的实例中,我们将深入探讨这两种概念及其在S60平台上的应用。 首先,...

    实用面向对象软件工程教程

    本教程“实用面向对象软件工程教程”旨在深入探讨面向对象分析(OOA)和面向对象设计(OOD)的关键原则,帮助开发者构建高质量、可维护的软件系统。 在面向对象分析阶段,我们首先理解问题域,识别出关键实体和它们...

    西工大面向对象课程unit2

    在“西工大面向对象课程unit2”中,我们可以深入探讨OOP的核心概念、原则以及具体实现。 1. **核心概念** - **对象**:是现实世界中实体的抽象,包含属性(数据成员)和行为(方法)。 - **类**:是创建对象的...

    unity对象池的案例Demo

    在本案例Demo中,我们将深入探讨Unity对象池的工作原理、实现方法以及如何在实际项目中应用。 对象池的主要目标是管理游戏中的短期和中期生存的对象,例如子弹、敌人或者粒子效果。当这些对象不再需要时,它们不是...

    基于代码的客户端服务器创建指南,通过BoostC++库使用活动对象模式。.zip

    在本教程中,我们将深入探讨如何使用Boost.C++库,特别是Boost.Asio,来构建一个基于代码的客户端-服务器系统,采用活动对象模式。Boost.Asio是C++中用于网络编程的一个强大库,它提供了异步I/O操作,使得开发者能够...

    面向对象分析与设计(UML2.0版)(PDF)

    通过阅读《面向对象分析与设计(UML2.0版)》这本书,开发者可以深入理解UML2.0的各种图示和概念,学习如何有效地应用它们来设计和沟通复杂的系统。这本书将理论知识与实际案例相结合,是学习和提升面向对象分析与设计...

Global site tag (gtag.js) - Google Analytics