`
glintstar
  • 浏览: 12642 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Active Object 模式

阅读更多
Active Object 模式是Command模式的一种,是实现多线程控制的一项古老技术 .
在《敏捷软件开发》这本书中描述的算法如下:
1、构造一个命令。(实现Command模式的一个命令)
2、将该命令放入Active Object Engine(也就是放入一个队列,LinkedList)
3、从该Engine取出一个命令,执行,若该命令没有执行过,设为执行过,然后将自己加入队列尾部,若执行过,判断该命令执行需要的事件发生没有,未发生,再将自己加入队列尾部。事件发生了,将需要执行的命令加入队列尾部。

那么到底什么是主动对象呢?传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的。也就是,调用线程(calling threads)被“借出”,以执行被动对象的方法。

  而主动对象却不一样。这些对象持有它们自己的线程(甚或多个线程),并将这个线程用于执行对它们的任何方法的调用。因而,如果你想象一个传统对象,在里面封装了一个线程(或多个线程),你就得到了一个主动对象。

  例如,设想对象“A”已在你的程序的main()函数中被实例化。当你的程序启动时,OS创建一个线程,以从main()函数开始执行。如果你调用对象A的任何方法,该线程将“流过”那个方法,并执行其中的代码。一旦执行完成,该线程返回调用该方法的点并继续它的执行。但是,如果”A”是主动对象,事情就不是这样了。在这种情况下,主线程不会被主动对象借用。相反,当”A”的方法被调用时,方法的执行发生在主动对象持有的线程中。另一种思考方法:如果调用的是被动对象的方法(常规对象),调用会阻塞(同步的);而另一方面,如果调用的是主动对象的方法,调用不会阻塞(异步的)。

 

分享到:
评论

相关推荐

    多线程设计模式的ActiveObject模式示例_hy5.zip

    多线程设计模式的ActiveObject模式示例_hy5

    多线程设计模式的ActiveObject模式示例_hy4.zip

    多线程设计模式的ActiveObject模式示例_hy4

    ActiveObject

    Active Object模式的主要目的是解决多线程环境中的同步问题,提高代码的可读性和可维护性。 在传统的并发编程中,线程直接调用其他线程中的方法,这可能导致数据竞争、死锁等问题。而Active Object模式则将方法调用...

    ActiveObject模板

    ActiveObject模式的核心思想是将计算密集型任务封装在一个独立的执行线程中,从而解耦调用者和实际工作执行的线程,提高系统的响应性和可伸缩性。 在Java等面向对象语言中,通常使用Future和ExecutorService来实现...

    ActiveObject.pdf

    当实体模型发生变化时,如在上面的例子中向`Person`实体添加`getAge()`和`setAge()`方法,ActiveObject能够智能地检测到模式差异,并仅执行所需的DDL语句来适应这些变化。例如,如果数据库中已存在`person`表,且...

    ACE资料_PPT

    1. **Active Object模式**:Active Object是一种设计模式,它在并发编程中用于封装对象的执行上下文,确保了对象方法的执行顺序和线程安全。在"Active Object.pdf"中,可能详细解释了这种模式的概念、实现方式以及它...

    C++多线程编程_框架

    `ActiveObject.cpp`和`ActiveObject.h`可能涉及到Active Object设计模式。这种模式用于在多线程环境中封装对象的行为,每个Active Object都有自己的工作线程,以处理来自其他线程的请求。这有助于避免线程间的直接...

    应用了长期运行的活动对象模式

    Active Object模式是一种设计模式,主要用于解决并发和多线程环境中的问题,尤其是在分布式系统和异步编程中。这种模式将行为和状态封装在一个对象中,使得它能够独立于执行环境,确保了线程安全性和良好的响应性。...

    Python Active Object Server-开源

    Python Active Object Server(PAOS)是一个开源项目,旨在提供一种机制,使得Python对象可以通过网络进行交互和事件通知。这个服务器不仅允许对象之间的通信,还包含了对事件处理和对象缓存的管理,使得开发者能够...

    ACE 概述.pdf

    - 并发机制:Active Object 模式支持异步操作处理。 - 内存管理机制:智能指针等工具提高内存使用的安全性。 - CORBA 集成:支持与 Common Object Request Broker Architecture (CORBA) 的交互。 3. **ACE ...

    ACE-tutorial

    - **定义**: Active Object模式允许对象异步执行操作,从而避免了同步调用带来的阻塞问题。 - **实现**: 通过使用`ACE_Task`类来实现Active Object。 - **结构**: 一个Task通常包含一个或多个线程,以及用于管理...

    JavaConcurrencyPattern:Java并发模式

    Active Object模式: Immutable Object模式: Two-phase Termination模式: 【前言】 随着现代CPU的生产Craft.io从提升CPU主频频率转向多核化,即在一块芯片上集成多个CPU内核(Core),以往那种靠CPU自身处理能力的...

    Active Object real-time OS:AO RTOS是基于Active Object并发模型的小型实时OS-开源

    **Active Object并发模型** Active Object(也称为Actor模型)是一种并发编程模型,它将对象视为独立的计算实体,每个对象都有自己的执行线程,并通过消息传递进行通信。在AO RTOS中,这种模型被用于创建高效、实时...

    模拟ATL建立Auto Object Map

    ATL(Active Template Library)是Microsoft提供的一种C++库,用于简化COM(Component Object Model)组件的开发。在ATL项目中,Auto Object Map是一个关键的概念,它帮助开发者管理对象的创建和生命周期,使得对象...

    Active X控件

    Active X控件基于OLE(Object Linking and Embedding)技术,并且与COM(Component Object Model)相兼容,使得不同编程语言开发的组件可以无缝集成。 Mscomctl.ocx是一个包含多种通用Active X控件的库,如滚动条、...

    多线程-如果我是国王.docx

    为了解决这个问题,作者提出了使用Active Object的设计模式。 Active Object是一种设计模式,它允许对象接收异步请求并在后台线程中处理。在Java中,可以通过实现`Runnable`接口创建一个任务对象,然后将其提交给...

Global site tag (gtag.js) - Google Analytics