主动对象

主动对象
那么到底什么是主动对象呢?传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的。也就是,调用线程(calling threads)被“借出”,以执行被动对象的方法。
而主动对象却不一样。这些对象持有它们自己的线程(甚或多个线程),并将这个线程用于执行对它们的任何方法的调用。因而,如果你想象一个传统对象,在里面封装了一个线程(或多个线程),你就得到了一个主动对象。
例如,设想对象“A”已在你的程序的main()函数中被实例化。当你的程序启动时,OS创建一个线程,以从main()函数开始执行。如果你调用对象A的任何方法,该线程将“流过”那个方法,并执行其中的代码。一旦执行完成,该线程返回调用该方法的点并继续它的执行。但是,如果”A”是主动对象,事情就不是这样了。在这种情况下,主线程不会被主动对象借用。相反,当”A”的方法被调用时,方法的执行发生在主动对象持有的线程中。另一种思考方法:如果调用的是被动对象的方法(常规对象),调用会阻塞(同步的);而另一方面,如果调用的是主动对象的方法,调用不会阻塞(异步的)。

时间: 2024-08-28 20:11:07

主动对象的相关文章

ACE主动对象模式(1)

转载于:http://www.cnblogs.com/TianFang/archive/2006/12/11/589168.html 主动对象模式用于降低方法执行和方法调用之间的耦合.该模式描述了另外一种更为透明的任务间通信方法. 传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的,当方法被调用时,调用线程将阻塞,直至调用结束.而主动对象却不一样.这些对象具有自己的命令执行线程,主动对象的方法将在自己的执行线程中执行,不会阻塞调用方法. 例如,设想对象"A&quo

ACE主动对象模式(2)

转载于:http://www.cnblogs.com/TianFang/archive/2006/12/12/590153.html 我们简单的介绍了一下ACE主动对象实现方式,同时提出了两个问题: 方法调用线程如何知道该方法已经执行完成? 如何或得方法的返回值? 要解决这两个问题,首先得介绍一下ACE_Future对象,ACE_Future是表示一个会在将来被赋值的"期货"对象,可以通过ready()函数查询它是否已经被赋值.该对象创建的时候是未赋值的,后期可以通过set()函数来进

《面对对象分析与设计》书摘

太久没有读这些基础概念了.关键信息摘录备忘. 二.对象模型 面向对象编程是一种实现的方法,在这种方法中,程序被组织成许多组相互劣作的对象,每个对象代表某个类的实例,而类则属于一个通过继承关系形成的层次关系. 面对对象设计是一种设计方法,包含面对对象分解的过程和一种表示法,这种表示法用于展现被设计系统的逻辑模型和物理模型.静态模型和动态模型. 面向对象分析是一种分析方法,这种方法利用从问题域的词汇表中找到的类和对象来分析需求.  对象模型要素 抽象 封装 模块化 层次结构 类型 并发 持久 抽象

设计模式学习第一天:23种设计模式(全)

C#常见的设计模式 一.概要: 模式分为三种,设计模式.体系结构模式与惯用法.其中惯用法是一种语言紧密相关的模式,例如,定界加锁模式其实是一种惯用法. 在C#项目开发过程中,很多情况下您已经使用了某些模式,但或许您并不知道自己所使用的这种解决方案是一种已经被总结归纳的模式. 工厂.策略.桥接.模板方法.代理等等23种Gof经典模式是属于设计模式,设计模式的粒度相对较小,基本上用于提高模块内部的可扩展性和可维护性需求 三层.MVC.IoC/DI等属于体系结构模式,粒度比设计模式大,它是从项目的整体

面向对象思想

面向对象思想 编辑 面向对象的程序设计语言必 须有描述对象及其相互之间关系的语言成分.这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象:对象是属性及其操作的封装体:对象可按其性质划 分为类,对象成为类的实例:实例关系和继承关系是对象之间的静态关系:消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式:方法是消息的序列. 中文名 面向对象思想 性    质 思想 类    别 程序设计语言 领    域 软件 目录 1 简介 2 理解 3 面向对象 4 存在问题 5 概念特征 6 要

软件工程术语(上)

[A] B C D E F G H I J K L M N O P Q R S T U V W X Y Z abstract class 抽象类      提供一组子类共有行为的类,但它本身并不具有实例.抽象类表示一个概念,从中派生的类代表对这一概念的实施. Abstraction 抽象      对视图或模型的创建,其中忽略了不必要的细节,以便专注于一组特定的相关细节. access modifier存取权限      对类.方法或属性进行访问控制的关键字.Java 中的存取权限可以是公有.私

翻新并行程序设计的认知整理版(state of the art parallel)

近几年,业内对并行和并发积累了丰富的经验,有了较深刻的理解.但之前积累的大量教材,在当今的软硬件体系下,反而都成了负面教材.所以,有必要加强宣传,翻新大家的认知. 首先,天地倒悬,结论先行:当你需要并行时,优先考虑不需要线程间共享数据的设计,其次考虑共享Immutable的数据,最糟情况是共享Mutable数据.这个最糟选择,意味着最差的性能,最复杂啰嗦的代码逻辑,最容易出现难于重现的bug,以及不能测试预防的死锁可能性.在代码实现上,优先考虑高抽象级别的并行库(如C++11的future,PP

面向对象编程思想

http://blog.csdn.net/yzh648542313/article/details/34157593 面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计. 它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单

敏捷软件开发:原则、模式与实践——第16章 对象图、第17章 用例、第18章 顺序图

第16章 对象图 有时,呈现出系统在某个特定时刻的状态是非常有用的.和一个正在运行系统的快照类似.UML对象图展示了在一个给定时刻获取到的对象.关系和属性值. 不过,你应该对花太多的对象图保持警惕.在大部分的情况下,它们都可以从相应的类图中直接推导出来,因此没有多少用处. 第17章 用例 在所有的UML图中,用例图是最令人迷惑也是最没有用处的.我建议出来系统边界外,忽略掉所有其他的图.系统边界图示例如下: 大矩形是系统边界.矩形内的所有东西都是将要开发的系统的组成部分.矩形外面是操作系统的参与者